Aspnet核心部署到IIS - HTTP错误502.3

问题描述:

我已经创建了IIS站点并将其指向部署文件夹。我已启用stdout日志记录,这是错误:Aspnet核心部署到IIS - HTTP错误502.3

info:Microsoft.Extensions.DependencyInjection.DataProtectionServices [0] 用户配置文件可用。使用'C:\ Users \ No Managed Code \ AppData \ Local \ ASP.NET \ DataProtection-Keys'作为密钥存储库,并使用Windows DPAPI来加密静态密钥。 失败:Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler [1] 迭代查询结果时,数据库中发生异常。 System.Data.SqlClient.SqlException:无法打开登录请求的数据库“KeyStoneDb”。登录失败。 用户'IIS APPPOOL \ No Managed Code'登录失败。

因此,我将登录添加到具有所有必要权限的SQL。在DEV中重新测试 - 很好,但是在运行IIS时,我仍然遇到问题。正在使用的应用程序池是'没有托管代码'。

为什么不能连接到数据库?

IIS AppPool帐户是虚拟帐户,因此它们实际上并不以系统上的普通用户身份存在。

您无法使用该身份访问联网资源。共享\网络资源,如需要与这些帐户进行通信的文件共享和数据库,需要具有适当权限的'domain \ machinename $'。

给你的数据库赋予'domain \ machinename $'适当的权限。这应该做到这一点。

+0

我已经建立了一个可以访问相应数据库模式的SQL Server登录和用户登录。然后,我为aspnet核心设置了正确的应用程序池(无管理代码)。作为应用程序池标识,我使用了我的Windows管理员登录帐户。测试时,应用程序池标识(connect as ..),我收到一条成功消息,说明凭据是有效的。但是,当我浏览网站时,出现以下错误:用户'IIS APPPOOL \ No Managed Code'登录失败。为什么当我将应用程序池标识设置为我的Windows登录时使用此帐户? – Greg

+0

您的连接字符串是否在适当的appsettings.json中正确设置,我会检查正在使用的环境。看起来像不正确的appsettings.json正在习惯于我。 –

+0

这是我在appsettings.json中的连接字符串:{ “ConnectionStrings”:{ “DefaultConnection”:“Data Source = GREG-THINK \\ SQLEXPRESS; Initial Catalog = KeyStoneDb; Integrated Security = true; MultipleActiveResultSets = true” } , “记录”:{ “IncludeScopes”:假的, “的LogLevel”:{ “默认”: “调试”, “系统”: “信息”, “微软”: “信息” } } } – Greg