Net Core 2.0 寻找 appsettings.Production.json 文件

21

我创建了几个 .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,它可以工作。

我更改了生产文件中"MyName"的值并进行了记录。是的,从appsettings.Production.json读取。

为什么?Production没有在任何地方定义。

1个回答

39
默认情况下,ConfigurationBuilder 会查找 appsettings.<EnvironmentName>.json 文件,因此根据您所使用的环境,该文件的名称会发生更改。当您使用 IIS Express 时,处于 Development 环境;而当您部署应用程序时,您则处于 Production 环境。因此,您需要 appsettings.Production.json
在调试时,有一个名为 ASPNETCORE_ENVIRONMENT 的环境变量,其值为 Development,而在部署时,若未设置 ASPNETCORE_ENVIRONMENT,则默认值为 Production

1
如何将环境切换到生产环境?我没有看到任何地方设置环境变量。 - Gina Marano
7
如果未设置 ASPNETCORE_ENVIRONMENT,它将默认为 Production - Kahbazi
2
这个有文档记录吗? - Gina Marano
3
@ginalster 是的,这是链接 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.1 - Kahbazi
@Kahbazi,随着.NET 6的发布(不是核心版本),我找不到关于使用环境变量的.NET 6特定文档。 它们的功能是否相同? - David Mays

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接