web-dev-qa-db-fra.com

Hébergement ASP.NET Core - Erreur de serveur interne 500

J'essaie de publier en tant que projet ASP.NET Core avec un fournisseur d'hébergement prenant en charge ASP.NET Core. Je reçois 500 Internal Server Error qui, à mon avis, est très courant. Donc, j'ai cherché sur Internet et divers forums, puis j'ai vérifié le processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" dans web.config et ils ont l'air d'être correctement convertis avec processPath="dotnet" and arguemnts=".\MyApplication.dll".

J'ai également vérifié le connectionString et il pointe au serveur de production DB qui fonctionne. J'ai confirmé la connexion à la base de données en modifiant connectionString en base de données de production et en exécutant le projet en local. Cela fonctionne et j'obtiens l'accès à la base de données de production.

J'ai également essayé d'obtenir les informations d'erreur en utilisant les éléments ci-dessous dans mon fichier Startup.cs (indépendamment de env):

app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();

J'ai également activé stdoutLog dans web.config en tant que, mais je ne vois pas ce dossier non plus:

stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"

J'ai également essayé de changer applicationUrl et launchUrl dans launchSettings.json en mon URL de prod, mais cela n'a pas fonctionné aussi bien.

Ainsi, le 500 Internal Server Error refuse de disparaître et je n'ai toujours aucun message d'erreur utile. La page dit juste:

Oups . 500 Internal Server ErrorUne erreur s'est produite lors du démarrage de l'application.

J'apprécierais vraiment si quelqu'un pouvait m'aider ici.

10
user6542823

J'ai également activé stdoutLog dans web.config en tant que, mais je ne vois pas ce dossier non plus:

stdoutLogEnabled = "true" stdoutLogFile = ".\logs\stdout"

Il y a une astuce ici - vous devez créer les deux dossiers logs et stdout manuellement - alors et seulement alors IIS créera un fichier journal dans le dossier logs (et non pas stdout comme on pouvait s'y attendre) - ne me demandez pas je ne sais pas pourquoi;)


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

Généralement, cela signifie des problèmes de configuration dans Startup.cs - les problèmes les plus courants incluent un problème avec la base de données elle-même, un problème de migration (si vous utilisez l’approche Code First), des problèmes avec appsettings.js, des problèmes avec les informations d’identification Social Logins (comme SecretKey manquant) ...

Veuillez vous référer au fichier journal dans .\logs\stdout - c’est le moyen le plus rapide de trouver des détails sur le problème :)


app.UseDeveloperExceptionPage ();

app.UseDatabaseErrorPage ();

Celles-ci fonctionneront après le démarrage complet de votre application Web, mais pas lors du démarrage de l'application.

22
Lukasz Makowej

Merci à Lukasz pour ses commentaires. J'ai pu voir le journal et il était indiqué que "l'option ClientId doit être fournie". Le problème était avec les UserSecrets. Comme secrets.json n’est disponible que dans Développement, aucun secret n’a été trouvé dans Production. Une fois que j'ai eu les secrets dans mon appSettings.json, cela a bien fonctionné.

De plus, pour répliquer cela dans un environnement local, accédez simplement à Propriétés du projet et remplacez la variable d'environnement ASPNETCORE_ENVIRONMENT par 'Production' et exécutez-le en local. Cela répliquera l'erreur 500 Internal Server en local et vous obtiendrez le message d'erreur.

4
user6542823

Je voudrais ajouter quelques informations supplémentaires à la réponse de @Lukasz Makowej.

J'ai découvert la raison pour laquelle il fallait créer le dossier. Dans la documentation Microsoft, il est dit que:

stdoutLogFile - Attribut de chaîne facultatif.

"..... Tous les dossiers fournis dans le chemin doivent exister pour que le module crée le fichier journal ...."

Vous devez donc le créer vous-même:) Découvrez-le ici:

https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/aspnet-core-module?view=aspnetcore-2.0

Je dois également dire que dans mon cas, je devais valider que le site Web disposait des autorisations nécessaires pour accéder au dossier "log".

2
RodrigoCampos

Assurez-vous également que le pack d'hébergement ASP.NET Core Windows Server est installé. Cela crée un proxy inverse entre IIS et le serveur Kestral.

Plus d'informations:

https://docs.Microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#tabpanel_tfsY37MhAQ_aspnetcore2x

1
dalemac

Assurez-vous que votre web.config est bon. J'ai été écrasé plus d'une fois par un web.config syntaxiquement correct qui faisait référence à un module (Rewrite) qui n'était pas sur le serveur. Pas de message d'erreur, autre que l'erreur de réponse 500. 

1
Tommy Hansen

Le journal std ne fonctionnait pas pour moi, je devais désinstaller toutes les versions du .ENT Core runtime/SDK du serveur et de mon local pour installer la dernière version.

Une autre chose qui a aidé a été de lier l’application IIS au port 5000 sans dns. Elle m’a donc montré les erreurs sur http: // localhost: 5000

0
Milox