Asp.net core 如何将带有connectionstring的ASP.NET核心Web API部署到IIS

Asp.net core 如何将带有connectionstring的ASP.NET核心Web API部署到IIS,asp.net-core,asp.net-core-webapi,Asp.net Core,Asp.net Core Webapi,我是ASP.NET核心的新手。我正在尝试开发一个简单的ASP.NET核心Web API。API连接到云中的数据库服务器。我将连接字符串存储在appsettings.json中,将API部署到本地IIS,并运行该服务。它工作得很好。当我尝试将连接字符串移动到环境变量并再次部署时,Web API不起作用。浏览器显示“页面不工作。HTTP错误500” 我有几个问题要问: 在真实的应用程序中,由于用户名和密码是敏感的,我们应该将连接字符串存储在哪里并部署到服务器 我的Web API有什么问题,因为当连接

我是ASP.NET核心的新手。我正在尝试开发一个简单的ASP.NET核心Web API。API连接到云中的数据库服务器。我将连接字符串存储在
appsettings.json
中,将API部署到本地IIS,并运行该服务。它工作得很好。当我尝试将连接字符串移动到环境变量并再次部署时,Web API不起作用。浏览器显示“页面不工作。HTTP错误500”

我有几个问题要问:

  • 在真实的应用程序中,由于用户名和密码是敏感的,我们应该将连接字符串存储在哪里并部署到服务器
  • 我的Web API有什么问题,因为当连接字符串存储在环境变量中时它不会工作
  • 谢谢你应该试试这个

    在Program.cs中

    WebHost
    .CreateDefaultBuilder(args)
    .ConfigureAppConfiguration(
        (hostingContext, builder) =>
        {
            var environment = hostingContext.HostingEnvironment;
            var configuration = new ConfigurationBuilder()
                .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true, reloadOnChange: true)
                .Build();
            //codes... 
        })
    .UseStartup<Startup>()
    .Build()
    .Run();
    
    WebHost
    .CreateDefaultBuilder(args)
    .ConfigureAppConfiguration(
    (hostingContext,生成器)=>
    {
    var-environment=hostingContext.HostingEnvironment;
    var configuration=new ConfigurationBuilder()
    .SetBasePath(System.IO.Directory.GetCurrentDirectory())
    .AddJsonFile(“appsettings.json”,可选:true,重载更改:true)
    .AddJsonFile($“appsettings.{environment.EnvironmentName}.json”),可选:true,重载更改:true)
    .Build();
    //代码。。。
    })
    .UseStartup()
    .Build()
    .Run();
    
    您的文件名应该类似于appsettings.Development.json、appsettings.Staging.json等

    我回答你的第一个问题:如果你想保护你的用户名和密码

  • 您应该使用第三方应用程序(如领事)

  • 您可以散列配置文件。但这一方法并不适用 理智

  • 您确实编写并使用硬代码。但除了部署之外,没有改变


  • 您可能希望在服务器上临时启用
    usedeveloperceptionpage()
    ,以便获得更具体的错误消息。或者,您可以从云主机的日志中获取异常详细信息。您使用的是什么云主机服务?这可能会影响存储机密的建议位置。我在本地计算机IIS中部署了API。数据库位于AWS中。当connectionstring位于appsetting.json中时,它可以正常工作,而在环境变量中,它不起作用。啊,我现在看到关于您的localhost。我很抱歉之前错过了。无论如何,在
    启动
    类中启用
    UseDeveloperExceptionPage()
    应该会为您提供一条更具体的异常消息,这将有助于隔离问题。我尝试在visual studio中运行web API,当点击Environment.GetEnvironmentVariable(“连接”)时,它会给我一条错误消息“值不能为null。参数名称:connectionString”“.这是什么意思?在我的环境变量中,我将键设置为connectionString:Connection。我可以知道这些文件appsettings.Development.json、appsettings.Staging.json的用途吗?这些文件根据环境的状态配置系统。例如,如果使用开发模式,系统将使用appsettings.development.json和appsttings.json文件。(请参阅更多持续集成)我的环境变量设置为development。如果我想将连接字符串添加到json文件,我应该添加到哪一个?如果您的连接字符串在不同的环境中更改,您应该将其写入特定于环境的配置。我在appsettings.json中添加connectionstring,而环境设置为development。它仍然能够连接到数据库。我的背景是真的吗?