ASP.NET核心 - 应用程序在发布后未连接到数据库

Edw*_*ard 10 sql-server asp.net iis connectivity

我使用用户身份验证创建了一个简单的ASP.Net Core应用程序(因此所有Entity Framework都已预先加载到Web应用程序模板中).它通过设置连接到我的数据库,该数据库connectionString位于我的appsettings.json文件中"data source = {computerName}\\{serverName}".

数据库实例和Visual Studio位于同一台计算机上.在开发和调试模式下,这可以很好地将数据返回到web api.当我发布它并尝试从域名转到该站点时,它允许我查看不需要数据库连接的网页,但其余需要数据库的数据会返回如下页面:

错误.
处理您的请求时发生错误.开发模式交换到开发环境将显示有关发生的错误的更详细信息.

不应在已部署的应用程序中启用开发环境,因为它可能导致向最终用户显示异常的敏感信息.对于本地调试,可以通过将ASPNETCORE_ENVIRONMENT环境变量设置为Development并重新启动应用程序来启用开发环境.

我试图将环境变量ASPNETCORE_ENVIRONMENT从开发变为生产,但没有成功.

我曾尝试添加appsettings.Production.jsonpublishOptions我的project.json文件,即使没有文件appsettings.Production.json,这并没有帮助.dotnet发布

中添加环境现状变量web.config文件没有工作部署

我需要帮助将已发布的web api从开发Visual Studio设置外部连接到我的SQL Server数据库.

我能想到的最后一件事是,我对连接字符串的理解可能不正确.如果web api使用连接字符串从服务器端连接到数据库,那么它应该像在开发调用时那样工作,http://localhost:port#因为它全部在同一台机器上.但是,如果数据库字符串需要基于客户端调用,则必须使用域名和IP地址.谁能告诉我它是哪一个?

我想到的唯一的另一件事是,我在IIS管理器中有一些我没有做的事情.我也看到了连接字符串,但由于连接字符串位于应用程序内部,因此不确定它是什么.也许我想给应用程序一些授权与数据库服务器通信,即使它们在同一台机器上???

Edw*_*ard 8

经过大量研究,最后用谷歌搜索"如何在iis中部署web api"我能够使用Visual Studio PublishIIS中学习Host ASP.NET Web API,我需要添加安全实体BUILTIN\IIS_IUSRS.然后将映射放到我的数据库表中,并将数据库的db_datareader(可能还有db_datawriter)提供给IUSER,以允许从我自己托管的IIS web api进行访问.这可以从上面提到的链接部分说明

在IIS APPPOOL\ASP.NET v4.0下访问数据库当我们使用ASP.NET v4.0应用程序池时,请确保将IIS APPPOOL\ASP.NET v4.0添加到数据库服务器 - >安全性 - >登录.