Aspnet核心应用程序构建配置并部署

时间:2019-07-19 10:48:33

标签: asp.net-core .net-core configuration asp.net-core-mvc environment-variables

在.Net 4.x中,我有一个Web配置,然后针对每个环境进行了配置转换。

我似乎无法弄清楚如何在.Net Core中运行它,这是我到目前为止所做的...

  • 创建文件“ appsettings.json”来保存适用于所有环境的基本配置
  • 创建appsettings。{envName} .json文件以保存特定于env的配置文件
  • 按照代码示例初始化配置(希望能获取正确的环境配置

{

public static void Main(string[] args)
{
    BuildWebHost(args).Build().Run();
}

public static IWebHostBuilder BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args)
    .UseKestrel((p) => p.AddServerHeader = false)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        var env = hostingContext.HostingEnvironment;
        config.AddCommandLine(args);
        config.AddEnvironmentVariables(prefix: "ENV_");
        config.SetBasePath(Directory.GetCurrentDirectory());
        config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
    })
    .UseStartup<Startup>();
}

因此,根据文档(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2),我现在修改了launchsettings.json以包括每个环境...

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:60913",
      "sslPort": 44313
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "Core/App",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Debug"
      }
    },
    "Dev": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Dev",
        "ASPNETCORE_DETAILEDERRORS": "true"
      },
      "applicationUrl": "https://dev.server.url/"
    },
    "Test": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Test",
        "ASPNETCORE_DETAILEDERRORS": "true"
      },
      "applicationUrl": "https://test.server.url/"
    }
  }
}

到目前为止一切都很好...

因此,现在,如果我设置发布配置文件并选择要使用的“ Dev”或“ Test”构建配置,我希望可以完全部署,但是在应用程序启动时会指定完全部署的环境。 / p>

这是我感到困惑的地方...

Web.config或项目设置(右键单击项目>属性>调试选项卡>环境变量)都是特定于环境的内容。

所以我为了“动态性”并能够配置东西而进行所有这些工作,现在我有了这个硬编码值,花哨的部署量不会改变。

那我错过了所有这一切吗?

我仍然需要在Web.config文件上使用配置转换来指定这样的环境信息吗...

          

如果是的话,那么所有这些json的东西又有什么意义呢?我肯定还要继续使用web.config呢?

还有最后一点...

这不是将所有环境的所有配置json文件都部署到所有服务器上吗……肯定是一个坏习惯吗?

开发服务器的安全性要比生产服务器低得多,并且我不希望将生产连接字符串部署到开发服务器。

0 个答案:

没有答案