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.
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
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
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:
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?!
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.
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:
Cela peut être défini lors de la modification de vos paramètres de publication.
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.
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.