Asp.net core 如何将带有connectionstring的ASP.NET核心Web API部署到IIS
我是ASP.NET核心的新手。我正在尝试开发一个简单的ASP.NET核心Web API。API连接到云中的数据库服务器。我将连接字符串存储在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有什么问题,因为当连接
appsettings.json
中,将API部署到本地IIS,并运行该服务。它工作得很好。当我尝试将连接字符串移动到环境变量并再次部署时,Web API不起作用。浏览器显示“页面不工作。HTTP错误500”
我有几个问题要问:
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。它仍然能够连接到数据库。我的背景是真的吗?