【问题标题】:ASP.NET Core - Application not connecting to database after publishingASP.NET Core - 发布后应用程序未连接到数据库
【发布时间】:2017-03-16 17:48:44
【问题描述】:

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

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

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

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

我尝试将 ASPNETCORE_ENVIRONMENT 的环境变量从 Development 更改为 Production,但没有成功。

我尝试在我的project.json 文件中将appsettings.Production.json 添加到publishOptions,即使没有文件appsettings.Production.json,但这并没有帮助。 dotnet publish

在web.config 文件中添加环境变量不起作用Deployment

我需要帮助来获取已发布的 Web api,以便从开发 Visual Studio 设置之外连接到我的 SQL Server 数据库。

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

唯一想到的其他事情是,在 IIS 管理器中我没有做但需要做的事情。我在那里也看到了连接字符串,但由于连接字符串在应用程序内部,因此不确定这对我们来说是什么。另外,也许我想给应用程序某种授权以与数据库服务器进行通信,即使它们在同一台机器上???

【问题讨论】:

    标签: asp.net sql-server iis connectivity


    【解决方案1】:

    经过大量研究,终于在谷歌上搜索“如何在 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 添加到您的数据库服务器 -> 安全 -> 登录。

    【讨论】:

    • 感谢您分享您的解决方案。它帮助了我。我所要做的就是将 BUILTIN\IIS_IUSRS 添加到具有读/写权限的 Db 登录中。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多