在IIS,Windows 10上托管.net核心应用时,如何设置connectionString?

时间:2019-05-22 16:26:14

标签: sql-server iis

我一直在遵循此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"))
            );

是否有设置连接字符串的特定方法?这是我第一次这样做。

编辑

这不是生产设置。我将在此笔记本电脑上克隆实际的应用程序。成功完成设置后,将使用此笔记本电脑演示应用程序。

2 个答案:

答案 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)

要解决此问题,

  1. 我为sql服务器启用了混合身份验证。
  2. 创建用户
  3. 向用户提供适当的凭据(读/写)

连接字符串现在看起来像这样。

"ConnectionStrings": {
  "MembersDatabase": "Data Source=.;Initial Catalog=MembersDb;User Id=test_user;Password=P@ssword123;"
}