web-dev-qa-db-fra.com

Net Core 2.0 à la recherche de appsettings.Production.json

J'ai créé quelques-unes de ces applications Web .net core 2 et aucun problème jusqu'à celui-ci.

L'exécution locale sous IISExpress s'exécute correctement, mais lorsque je déploie une version de débogage dans un dossier IIS sur le serveur, j'ai des problèmes.

Lorsque je lis l'entrée de configuration, elle est introuvable:

_config["MySettings:MyName"];

contenu des fichiers:

appsettings.Development.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "MySettings": {
    "MyName": "JohnDoe"
  }
}

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Trace"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}

launchSetting.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:60668/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/security",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApi.ViewerSecurity": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/security",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:60669/"
    }
  }
}

Si je copie appsettings.Development.json et que je renomme en appsettings.Production.json, cela fonctionne.

J'ai changé la valeur de "MyName" dans le fichier prod et l'ai enregistré. Oui, en lisant dans appsettings.Production.json.

Comment et pourquoi? La production n'est définie nulle part.

7
Gina Marano

La valeur par défaut de ConfigurationBuilder recherche appsettings.<EnvironmentName>.json fichier, donc en fonction de l'environnement avec lequel vous travaillez, le nom de ce fichier est modifié. et lorsque vous êtes dans IIS Express, vous êtes dans Development et lorsque vous déployez votre application, votre environnement est Production. C'est pourquoi vous avez besoin de appsettings.Production.json.

Lorsque vous déboguez, il existe une variable d'environnement appelée ASPNETCORE_ENVIRONMENT qui est défini sur Development et dans votre déploiement où ASPNETCORE_ENVIRONMENT n'est pas défini, la valeur par défaut est Production

15
Kahbazi