【问题标题】:Aspnet core deployment to IIS - HTTP Error 502.3将 Aspnet 核心部署到 IIS - HTTP 错误 502.3
【发布时间】:2017-05-16 01:00:32
【问题描述】:

我已创建 IIS 站点并将其指向部署文件夹。我已启用标准输出日志记录,这是错误:

信息: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 时我仍然遇到问题。正在使用的应用程序池是“无托管代码”。

为什么应用无法连接到数据库?

【问题讨论】:

    标签: asp.net-mvc iis asp.net-core asp.net-core-mvc asp.net-core-1.0


    【解决方案1】:

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

    您不能使用该身份授予对网络资源的访问权限。需要与这些帐户通信的共享\网络资源(如文件共享和数据库)需要具有具有适当权限的“域\机器名$”。

    在您的数据库上授予 'domain\machinename$' 适当的权限。那应该这样做。

    【讨论】:

    • 我已经设置了一个 SQL Server 登录和用户登录,可以访问相应的数据库架构。然后,我为 aspnet 核心设置了正确的应用程序池。(无托管代码)。作为应用程序池身份,我使用了我的 Windows 管理员登录帐户。在测试应用程序池身份(连接为 ..)时,我收到一条成功消息,说明凭据有效。但是,当我浏览该站点时,出现错误:用户 'IIS APPPOOL\No Managed Code' 登录失败。为什么在我将应用程序池标识设置为我的 Windows 登录时使用此帐户?
    • 您的连接字符串是否在适当的 appsettings.json 中正确设置,我会检查正在使用的环境。看起来我习惯了不正确的 appsettings.json。
    • 这是我在 appsettings.json 中的连接字符串: { "ConnectionStrings": { "DefaultConnection": "Data Source=GREG-THINK\\SQLEXPRESS;Initial Catalog=KeyStoneDb;Integrated Security=true;MultipleActiveResultSets =true" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }
    • 我看不出它怎么可能是 appsettings.json 问题,因为正在找到连接字符串并且应用程序池标识正在尝试登录。
    • 从您的连接字符串中,我看不到您使用 SQL 用户名...如果您使用集成安全性,那么您需要在数据库中授予“Yourdomain\yourmachinename$”适当的权限...
    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多