我一直在遵循此video on YouTube,以了解如何在Windows 10的 IIS 上托管Asp.net Core应用程序。现在,我尝试通过在本地计算机上的SQL Server实例中添加 connectionString 来建立此基础。
使用Visual Studio运行应用程序时,它运行良好。但是,当我将其发布到文件夹然后使用 IIS 运行它时,会引发错误。
这是我的联系
"ConnectionStrings": {
"MembersDatabase": "Data Source=.;Initial Catalog=MembersDb;Integrated Security=True"
}
这就是我的访问方式:
services.AddDbContext<MembersContext>
(options => options.UseSqlServer(Configuration.GetConnectionString("MembersDatabase"))
);
是否有设置连接字符串的特定方法?这是我第一次这样做。
这不是生产设置。我将在此笔记本电脑上克隆实际的应用程序。成功完成设置后,将使用此笔记本电脑演示应用程序。
答案 0 :(得分:0)
很难确切地说出,特别是因为您没有发布所得到的实际错误。但是,我最好的猜测是您没有为部署环境自定义连接字符串。
目前,您的操作方式取决于LocalDb,它仅在Visual Studio的IDE中有效/存在。部署到IIS时,您将需要一个真实的数据库实例和真实的数据库凭据。
设置数据库服务器远远超出了这里可以合理涵盖的范围,因此,如果您需要在那里的帮助,则需要自己进行一些研究。一旦有了实际的实例和数据库,就可以为部署环境自定义连接字符串了。
现在,您可以通过多种方式来这里。通常,您想要提供一个配置文件,该配置文件将覆盖开发环境中/默认情况下的设置。这可能是特定于环境的JSON文件,例如appsettings.Production.json
,环境变量(您可以在目标服务器上或通过CI / CD管道手动设置)或什至是外部源(例如Azure Key Vault) 。我要说的是,由于连接字符串通常包含应保密的信息(密码),因此应避免使用JSON和其他基于文件的配置选项,因为这些选项未加密且通常提交给源代码管理。环境变量,Azure Key Vault等应是您转到此处的解决方案。
无论如何,该配置实际上是在覆盖的基础上工作的,因此您只需要模仿appsettings.json
中存在的结构。然后,对于不允许使用JSON之类的层次结构的配置源,可以使用冒号(:
)来分隔树中的项目:ConnectionStrings:MembersDatabase
作为配置键。例如,作为环境变量,它就是变量名。
答案 1 :(得分:0)
要解决此问题,
连接字符串现在看起来像这样。
"ConnectionStrings": {
"MembersDatabase": "Data Source=.;Initial Catalog=MembersDb;User Id=test_user;Password=P@ssword123;"
}