web-dev-qa-db-ja.com

appsettings.Production.jsonを探しているNet Core 2.0

これらの.net core 2 Webアプリをいくつか作成しましたが、これまでは問題ありませんでした。

IISExpressでローカルに実行すると正常に実行されますが、デバッグバージョンをサーバー上のIISフォルダーに展開すると問題が発生します。

構成エントリを読み取ったときに見つかりません。

_config["MySettings:MyName"];

ファイルの内容:

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/"
    }
  }
}

Appsettings.Development.jsonをコピーし、appsettings.Production.jsonに名前を変更すると機能します。

Prodファイルの「MyName」の値を変更してログに記録しました。はい、appsettings.Production.jsonから読み取ります。

方法と理由?生産はどこにも定義されていません。

7
Gina Marano

デフォルトのConfigurationBuilderappsettings.<EnvironmentName>.jsonファイルを探しているため、作業している環境に基づいて、このファイルの名前が変更されます。また、IIS ExpressにいるときはDevelopmentにあり、アプリケーションをデプロイするときの環境はProductionです。これがappsettings.Production.jsonが必要な理由です。

デバッグする場合、Developmentに設定されるASPNETCORE_ENVIRONMENTという環境変数があり、ASPNETCORE_ENVIRONMENTが設定されていないデプロイでは、デフォルトはProductionです。

15
Kahbazi