我使用用户身份验证创建了一个简单的ASP.Net Core应用程序(因此所有Entity Framework都已预先加载到Web应用程序模板中)。它使用位于我的connectionString
文件中的appsettings.json
连接到我的数据库,并设置了"data source = {computerName}\\{serverName}"
。
数据库实例和Visual Studio位于同一台计算机上。在开发和调试模式下,这可以很好地将数据返回到web api。当我发布它并尝试从域名转到该站点时,它允许我查看不需要数据库连接的网页,但其他需要数据库数据的网页返回如下页面:
错误。
处理您的请求时发生错误。 发展模式 交换到开发环境将显示有关发生的错误的更详细信息。不应在部署中启用开发环境 应用程序,因为它可能导致敏感信息 向最终用户显示例外情况。对于本地调试, 可以通过设置启用开发环境 ASPNETCORE_ENVIRONMENT环境变量到开发,和 重新启动应用程序。
我试图将ASPNETCORE_ENVIRONMENT
的环境变量从开发更改为生产,但没有成功。
我已尝试在我的appsettings.Production.json
文件中将publishOptions
添加到project.json
,即使没有文件appsettings.Production.json
,这也无济于事。 dotnet publish
在web.config
文件中添加环境变量无效Deployment
我需要帮助将已发布的web api从开发Visual Studio设置外部连接到我的SQL Server数据库。
我能想到的最后一件事是,我对连接字符串的理解可能不正确。如果web api使用连接字符串从服务器端连接到数据库,那么它应该像开发时调用http://localhost:port#
一样工作,因为它们都在同一台机器上。但是,如果数据库字符串需要基于客户端调用,则必须使用域名和IP地址。
有人能告诉我它是哪一个吗?
唯一想到的是,我在IIS管理器中没有做什么,需要做什么。我也看到了连接字符串,但由于连接字符串在应用程序内部,所以不确定它是什么。也许我想给应用程序一些授权与数据库服务器通信,即使它们在同一台机器上???
答案 0 :(得分:8)
经过大量研究,最后搜索“如何在iis中部署web api”我能够从Host ASP.NET Web API in IIS using Visual Studio Publish学到我需要添加安全实体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添加到数据库服务器 - >安全 - >登录。