【问题标题】:How to deploy ASP.NET Core Web API with connectionstring to IIS如何将带有连接字符串的 ASP.NET Core Web API 部署到 IIS
【发布时间】:2023-03-28 16:54:01
【问题描述】:

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

我有几个问题要问:

  1. 在现实世界的应用程序中,由于用户名和密码很敏感,我们应该在哪里存储连接字符串并部署到服务器?
  2. 我的 Web API 有什么问题,因为当连接字符串存储在环境变量中时它不起作用?

谢谢

【问题讨论】:

  • 您可能希望在服务器上临时启用UseDeveloperExceptionPage(),以便获得更具体的错误消息。或者,您也许能够从云主机的日志中获取异常详细信息。
  • 您使用的是什么云托管服务?这可能会影响存储机密的推荐位置。
  • 我在本地机器 IIS 中部署 API。该数据库位于 AWS 中。当连接字符串在 appsetting.json 中而在环境变量中时,它工作正常,它不起作用。
  • 啊,我现在看到了关于您的本地主机的信息。对于之前错过的内容,我深表歉意。无论如何,在您的 Startup 类中启用 UseDeveloperExceptionPage() 应该会为您提供更具体的异常消息,这将有助于隔离问题。
  • 我尝试在 Visual Studio 中运行 Web API,当点击 Environment.GetEnvironmentVariable("Connection") 时,它给我一条错误消息“值不能为空。参数名称:connectionString'”。什么意思?在我的环境变量中,我将键设置为 ConnectionStrings : Connection.

标签: asp.net-core asp.net-core-webapi


【解决方案1】:

你应该试试这个

在 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();

你的文件名应该是 appsettings.Development.json, appsettings.Staging.json, ...

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

  1. 您应该使用第三方应用程序(如 consul)

  2. 你散列你的配置文件。但是这种方法不 感觉。

  3. 您确实编写和使用硬代码。但除了部署之外没有变化。

【讨论】:

  • 我可以知道这些文件appsettings.Development.json、appsettings.Staging.json的用途吗?
  • 这些文件根据环境状态配置系统。例如,如果您使用开发模式,系统会使用 appsettings.Development.json 和 appsttings.json 文件。 (查看更多持续集成)
  • 我的环境变量设置为开发。如果我想将连接字符串添加到 json 文件中,我应该添加到哪一个?
  • 如果您的连接字符串在不同的环境中发生变化,您应该将其写入特定于环境的配置。
  • 当环境设置为开发时,我在 appsettings.json 中添加了连接字符串。它仍然能够连接到数据库。我的设置是真的吗?
猜你喜欢
  • 2021-09-22
  • 2018-05-23
  • 2022-06-28
  • 2019-01-06
  • 1970-01-01
  • 2020-10-01
  • 2022-06-15
  • 2021-09-20
  • 2017-02-24
相关资源
最近更新 更多