【问题标题】:Dotnet core application cannot connect to SQL server using IIS, only when using IIS Express or Kestrel仅当使用 IIS Express 或 Kestrel 时,Dotnet 核心应用程序无法使用 IIS 连接到 SQL Server
【发布时间】:2018-09-20 10:28:06
【问题描述】:

我有一个从 SQL Server 获取一些数据的 .NET Core Web 应用程序。我通过 Internet 连接到 SQL Server。

当我使用 IIS Express 或 Kestrel 运行应用程序时,我可以连接到数据库服务器并检索数据。我还可以使用 SQL Server Management Studio 成功连接到数据库服务器。

这是我正在使用的连接字符串:

"ConnectionStrings": {
    "DefaultConnection": "Server=my-sql-server.someurl.com; Initial Catalog=my-sql-database; User ID=my-user-id; Password=my-password;"
}

但是当我尝试在 IIS 中运行同一网站时,在同一台机器上,我收到以下错误消息:

SqlException:与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP 提供者,错误:0 - 不知道这样的主机。)

我怀疑这与 dotnet core/IIS 组合有关,而不是防火墙/网络/身份验证问题,但我可能错了。

【问题讨论】:

  • 请检查您的IP是否被服务器限制?
  • 它是否可以在使用完整 IIS 失败的同一台机器上工作? my-sql-server.somedomain.com 是 Intranet/Active Directory 计算机还是您尝试通过公共 Internet 访问它?
  • 我在同一台机器上测试:使用 IIS Express/Kestrel 时可以连接,但无法使用 IIS 连接。我通过公共互联网连接 SQL 服务器,我不在同一个网络上。我无法检查 SQL 服务器是否限制了我的 IP,但没有理由相信,因为我可以通过 IIS 以外的任何其他方式连接到它。
  • 也许关闭 Windows 防火墙并看看是否有区别。 (拥有一个可公开访问的 SQL Server 似乎是一个非常糟糕的主意,通常使用 VPN 代替)
  • 我尝试关闭防火墙,但没有帮助。非常感谢您的建议,顺便说一句,我非常感谢您的帮助。

标签: sql-server iis .net-core ef-core-2.0


【解决方案1】:

问题只是我查看了错误的连接字符串。

我的 appsettings.json 包含一个连接字符串,而 appsettings.Production.json 包含另一个。

使用 IIS Express 或 Kestrel 运行应用程序时,使用的是第一个,但是当我发布应用程序然后在 IIS 下运行它时,环境设置为生产,而是使用生产设置。

问题是生产连接字符串指向一个不再存在的数据库服务器。

【讨论】:

    【解决方案2】:

    我通过将 LocalSystem 添加到网站 Application pool 中的 Identity 解决了这个问题。

    步骤:

    1. 选择网站应用程序池
    2. 右键单击并单击高级设置
    3. 单击身份,并将其更改为 LocalSystem

    【讨论】:

    【解决方案3】:

    您需要在 sql server 上启用 TCP/IP 协议。请使用以下链接: Why am I getting "Cannot Connect to Server - A network-related or instance-specific error"?

    【讨论】:

    • 感谢您的提示,但我没有那种访问 SQL 服务器的权限。由于我可以使用 IIS Express 而不是 IIS 连接到 SQL 服务器,我怀疑这个问题与 dotnet core、EF core 和 IIS 的组合有关。
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多