我跟随这个video on YouTube学习了如何在IISWindows10上托管Asp.net核心应用程序,运行良好。现在,我尝试在此基础上构建,方法是向本地计算机上的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"))
);
有没有一种特殊的connectionstring?设置方法这是我第一次这样做。
编辑
这不是生产设置。我将在这台笔记本电脑上克隆真正的应用程序。在我成功完成设置之后,这台笔记本电脑将用于演示该应用程序。
发布于 2019-05-24 03:38:08
为了解决这个问题,
连接字符串现在如下所示。
"ConnectionStrings": {
"MembersDatabase": "Data Source=.;Initial Catalog=MembersDb;User Id=test_user;Password=P@ssword123;"
}
发布于 2019-05-23 01:42:24
这很难说清楚,特别是因为你没有发布你得到的实际错误。但是,我最好的猜测是您没有为您的部署环境定制连接字符串。
你目前使用的方式依赖于LocalDb,它只能在Visual Studio的集成开发环境中工作/存在。在部署到IIS时,您将需要一个真实的数据库实例和真实的数据库凭据。
设置数据库服务器远远超出了本文合理介绍的范围,因此,如果您需要帮助,则需要自己进行一些研究。一旦您有了实际的实例和数据库,就可以为您的部署环境定制连接字符串了。
现在,你有多种方法可以到达这里。通常,您希望提供一段配置来覆盖在开发环境/默认情况下设置的内容。这可以是一个特定于环境的JSON文件,如appsettings.Production.json
,一个环境变量(您可以在目标服务器上手动设置,也可以通过CI/CD管道设置),甚至可以是一个外部源,如Azure Key Vault。我要说的是,由于连接字符串通常包含应该保密的信息(密码),您应该避免使用JSON和其他基于文件的配置选项,因为这些选项没有加密,通常提交给您的源代码控制。环境变量,Azure密钥库等应该是你在这里的goto解决方案。
无论如何,配置都是基于覆盖的,所以你只需要模仿appsettings.json
中的结构就可以了。对于不允许像JSON这样的分层结构的配置源,可以使用冒号(:
)来分隔树中的项:ConnectionStrings:MembersDatabase
作为配置键。例如,作为环境变量,这将是变量名。
https://stackoverflow.com/questions/56261268
复制相似问题