web-dev-qa-db-fra.com

Le déploiement d'une application Web ASP.NET Core 2.2 standard dans Azure à l'aide de Web Deploy génère une erreur.

Je suis allé publier une application Web principale asp.net en utilisant Azure via l'écran Publier de Visual Studio 2017. J'ai utilisé tous les paramètres par défaut, mais mon application utilise les migrations.

Lorsque j'essaie d'accéder au site, je reçois:
Impossible d'afficher la page car une erreur de serveur interne s'est produite.

Je pense que je dois faire quelque chose avec la chaîne de connexion et la variable ASPNETCORE_ENVIRONMENT.

J'ai toujours les applications par défaut appsettings.json et appsettings.Development.json que vous obtenez lors de la création d'une nouvelle application Web principale asp.net. Le fichier appsettings.json pointe sur ma base de développement locale et le fichier appsettings.Development.json sur la base de données Azure du profil de publication.

Ou bien le profil de publication gère-t-il automatiquement la chaîne de connexion et je n'ai aucune des actions ci-dessus?

8
Blake Rivell

Par défaut, les applications ASP.NET Core 2.2 sont configurées pour utiliser le nouveau modèle d'hébergement In Process. Cela ne sera disponible sur Azure dans toutes les régions que vers décembre 2018. Ils le mentionnent ici .

Pour l'instant, la solution consiste à ajouter les éléments suivants en haut du fichier .csproj de votre application Web:

  <PropertyGroup>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
19
Blake Rivell

Une solution simple consiste à placer la chaîne de connexion Azure-db dans le appsettings.json au lieu du appsettings.Development.json.

Lorsque vous exécutez l'application principale asp.net générée par défaut dans VS2017, vous pouvez trouver le fichier launchSettings.Json dans le dossier Propriétés avec les profils qui seront exécutés localement . Dans cette section, vous pouvez voir que la propriété ASPNETCORE_ENVIRONMENT est définie. à Développement .

"WebApp": {
  "commandName": "Project",
  "launchBrowser": true,
  "applicationUrl": "http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

Cela signifie que si vous définissez la chaîne de connexion à la base de données locale dans votre appsettings.Development.json, celle-ci utilisera sa chaîne de connexion lors de son exécution locale.

Si vous ne définissez pas la propriété ASPNETCORE_ENVIRONMENT, le runtime utilisera uniquement les valeurs de appsettings.json (Runtime définira le ASPNETCORE_ENVIRONMENT sur Production par défaut, mais si vous n'avez défini aucun appsettings.Production.json, seules les valeurs dans appSettings.json sera utilisé).

Ainsi, lors de l'exécution de l'application Web Azure, vous n'avez pas du tout besoin de spécifier le ASPNETCORE_ENVIRONMENT si vous placez la chaîne de connexion Azure-db dans le appsettings.json.

1
Marcus Höglund

Vous pouvez vérifier et définir les paramètres de votre application et les chaînes de connexion dans la section Application settings de votre service:

 enter image description here

1
Michael