web-dev-qa-db-fra.com

Microsoft.AspNetCore.Antiforgery est introuvable

Je déploie un site Web asp.net core 2.0 sur IIS 10.

J'ai vérifié que mon application utilise la configuration correcte pour ISS dans le fichier program.settings.

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();
}

Et dans mon fichier startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<IISOptions>(options =>
        {
        });
        services.AddMvc();
    }

Pourtant, lorsque j'exécute dotnet website.dll à partir de la ligne de commande, le message d'erreur ci-dessous s'affiche dans la fenêtre de ligne de commande:

Un assembly spécifié dans le manifeste des dépendances d'application (website.deps.json) est introuvable: package: 'Microsoft.AspNetCore.Antiforgery', version: '2.0.1' chemin: 'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery .dll 'Cet assembly devait se trouver dans le magasin d'exécution local lorsque l'application a été publiée à l'aide des fichiers manifestes cibles suivants: aspnetcore-store-2.0.3.xml

Basé sur le message d'erreur, je suppose que Microsoft.AspNetCore.Antiforgery n'est pas fourni lorsque je publie car je ne reçois pas cette erreur lors du débogage.

Comment puis-je m'assurer que mon application peut trouver Microsoft.AspNetCore.Antiforgery lorsqu'elle est publiée dans un environnement en direct?

EDIT: Ceci est un site Web de base .net de base. Aucune modification n'a été apportée au projet standard pour le moment, à l'exception des modifications ci-dessus pour le déploiement avec IIS.

Lorsque j'exécute le projet à partir de IIS au lieu de la ligne de commande, j'obtiens un message d'erreur 502.5.

13
TidyDev

J'ai pu résoudre ce problème en mettant à jour le noyau d'exécution .net sur le serveur vers la version 2.0.3.

Ce problème se produit si

  1. Vous disposez d'un serveur existant exécutant la version 2.0.0 du runtime .net core.
  2. Vous créez une application ciblant la v2.0.3 du SDK
  3. Vous publiez l'application v2.0.3 sur un serveur exécutant la v2.0.0

Le problème peut être résolu en installant la version 2.0.3 du runtime sur le serveur. Vous pouvez télécharger le runtime à partir du site Microsoft ici https://www.Microsoft.com/net/download/windows

18
TidyDev

Si vous utilisez réellement cette bibliothèque, assurez-vous que votre fichier * .csproj a la référence explicite correspondante:

<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />

Ensuite, jouez avec la propriété PublishWithAspNetCoreTargetManifest pour résoudre le problème susmentionné avec un manifeste incompatible. Consultez les discussions suivantes pour en savoir plus sur les problèmes possibles lors de son déploiement:

n assembly spécifié dans le manifeste des dépendances d'application (RhWeb.deps.json) est introuvable

l'application publiée ne contient pas d'assembly (magasin d'exécution manquant associé ...) [2.0.0-preview2-005905]

Erreur HTTP 502.5 - Microsoft.AspNetCore.Antiforgery.dll

10
Mikhail

J'ai eu ce problème - solution de contournement simple, installez en fait le package NuGet (je ne l'utilisais pas).

Microsoft.AspNetCore.Antiforgery

Publié, déployé - résolu le problème.

Dans un autre cas, lorsque j'ai publié le projet, beaucoup de DLL n'étaient pas placées dans le dossier de publication - y compris Antiforgery. Ce qui suit semble forcer la publication à ajouter toutes les DLL requises.

Modifiez votre fichier projectname.json pour vous assurer que PropertyGroup contient PublishWithAspNetCoreTargetManifest = false:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>

Intéressé de savoir pourquoi cela fonctionne?!

6
niico

Ce problème se produit également si Antiforgery est appelé mais Antiforgery n'est pas installé.

Peut être corrigé en installant Microsoft.AspNetCore.Antiforgery par le gestionnaire de packages Nuget.

3
yafima1

Si vous publiez l'application en tant qu'applications ASP.NET Core 2.2 autonomes selon la capture d'écran liée (je n'ai pas assez de représentants pour l'image en ligne), cela résoudra ce problème.

Autonome: Screenshot

Cela peut être défini lors de la modification de vos paramètres de publication.

1
xuye1122

J'ai résolu ce problème sur mon serveur Windows interne avec cette solution
* allez sur netcore https://github.com/dotnet/core/tree/master/release-notes
* aller à la dernière version du runtime de base 2.?
* téléchargez DotNetCore.2.0.6-WindowsHosting.exe dans mon cas
https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.6-download.md#net-core-runtime-only-installation

Installez-le sur le serveur et l'erreur a été résolue pour moi. J'espère que cela aide n'importe qui.

1
joakimja

Vous avez cette erreur après la mise à jour de Microsoft.AspNetCore.All de la v2.0.7 à la v2.0.8 (la dernière à l'époque), puis la publication sur un serveur qui exécutait .NET Core Runtime v2.0.7 (la dernière à l'époque).

Rétrogradé Microsoft.AspNetCore.All retour à v2.0.7, republié, et tout fonctionne.

1
Window