web-dev-qa-db-fra.com

L'application principale asp.net déployée sur iis rencontre une erreur de serveur interne de 500

:( Oops. 500 Internal Server Error Une erreur s'est produite lors du démarrage de l'application.

Ce message est sorti lorsque j'ai ajouté une fonctionnalité de base de données à mon application principale asp.net et que je l'ai déployée sur iis. Lorsque je l'ai développé dans Visual Studio, tout s'est bien passé. Mais après le déploiement, ces messages d'erreur sont apparus.

J'ai essayé d'utiliser dotnet myapp.dll pour exécuter mon application dans le dossier de déploiement, et a découvert que cela fonctionnait bien. Il est probable que le problème est lié à iis. J'ai essayé d'ajouter <compilation debug="true">..</compilation> à web.config, mais cela semble inutile. En réalité, quel est le problème ou existe-t-il un autre moyen de consulter les informations détaillées sur les erreurs afin de savoir ce qui s'est passé?

32
yitian
  1. Définissez stdoutLogEnabled = "false" sur true, puis vérifiez les journaux sur stdoutLogFile = ".\Logs\stdout". La ou les erreurs peuvent vous dire quelque chose.

  2. Vérifiez que vous avez configuré le nom d’environnement correct à l’aide de la variable d’environnement ASPNETCORE_ENVIRONMENT , afin d’utiliser les paramètres appropriés, tels que la chaîne de connexion. Par défaut, vous avez l'environnement "Développement" sur votre machine.

  3. Vous pouvez utiliser middlewares de gestion des erreurs pour montrer des exceptions comme

    app.UseDeveloperExceptionPage();
    
41
Set

Avait le même problème. Voici le guide qui m'a aidé . Notez que je ne voulais pas installer "Runtime" sur le serveur Web, mais plutôt déployer tous les fichiers nécessaires en tant qu'application autonome. Voici les étapes sous une forme plus abrégée:

  1. Sur votre PC local, déterminez la version à publier en fonction de votre serveur. Je visais Windows Server 2008, R2, ce qui voulait dire que je devais publier win7-x64. Ouvrez une invite de commande dans le répertoire de votre projet et exécutez la commande ci-dessous:

    dotnet publier -c release -r win7-x64

    Cela crée un dossier de publication contenant des centaines de dll, un fichier .exe et web.config situés ici: bin\Release\netcoreapp2.0\publish

  2. Sur le serveur Web avec IIS, accédez à cette page de destination . Cliquez sur le lien pour votre version souhaitée. Recherchez le lien vers le pack d'exécution et d'hébergement . Cliquez pour télécharger et exécuter.

  3. Redémarrez IIS en l'exécutant à partir d'une invite de commande élevée:

    net stop was

    net start w3svc

  4. Copiez tous les fichiers de votre dossier de publication local dans le dossier de votre choix sur le serveur IIS.

  5. Sur le serveur, ouvrez IIS et créez un AppPool et une application distincts, comme d'habitude. Pour l'AppPool, sous Paramètres de base, modifiez la version du .NET Framework en Pas de code géré . Assurez-vous que votre application dans IIS pointe vers votre dossier souhaité et le bon AppPool.

  6. Testez votre application Web dans un navigateur.

10
James Lawruk

Le commentaire de Mark333 ci-dessous a résolu mon problème.

Citant pour une lecture facile:

"J'utilise la publication normale fournie par Visual Studio. Et je viens de découvrir que l'utilisation de la dernière version de Hosting Bundle résoudra le problème. +1 sur ce Microsoft.com/net/download/dotnet-core/runtime-2.1 .0-rc1 "

J'ai dû installer pour 1.1 car mon application est un peu plus ancienne, mais Hosting Bundle l'a corrigée. Dans mon cas, nous déployons une image Docker pour notre environnement officiel, mais lorsque je souhaite effectuer des tests localement, je la publie et laisse mon serveur local IIS le servir.

5
Matthew Allen

Dans mon cas, je l’ai eu parce que je n’avais pas installé la dernière version de DotNetCore.2.0.0-WindowsHosting.exe sur le serveur Windows sur lequel je l’exécutais ... elle fonctionnait donc bien sur mon ordinateur local en mode débogage. et erreur cinq hundy'ing sur le serveur.

J'avais aussi d'autres problèmes non triviaux pour résoudre les problèmes liés à la mise à niveau ... Je vous conseillerais de l'éviter si vous le pouvez.

5
mrdavenz
3
Diego Venâncio

J'ai eu le même problème.

Mon problème était que ma chaîne de connexion à la base de données n'était pas définie dans appsettings.production.json

Et l'erreur de serveur interne 500 était au message d'erreur vague.

Changer le stdoutLogEnabled = true ne m'a rien fait, je ne voyais donc aucune information sur l'erreur.

2
Dongolo Jeno

J'avais installé DotNetCore.2.0.5-WindowsHosting.exe sur un ordinateur Windows 2008 R2 Standard et a rencontré la même erreur http 500. La journalisation n'a pas aidé (des journaux vierges ont été générés - et les journaux de l'observateur d'événements étaient le générique ErrorCode = 0x80070002)

J'ai dû faire deux choses pour résoudre mon problème:

  1. Accordez des droits de lecture à l'utilisateur ApplicationPoolIdentity (EG: IIS APPPOOL\AppPoolIdentityName)) sur le répertoire du site Web et le répertoire de l'application
  2. Je devais installer IIS ASP Cœur sous Gestionnaire de serveur (cela me paraissait bizarre, mais cela a fonctionné!)
2
Rots