代码之家  ›  专栏  ›  技术社区  ›  Bjarte Aune Olsen

仅当使用IIS Express或Kestrel时,Dotnet核心应用程序才能使用IIS连接到SQL server

  •  2
  • Bjarte Aune Olsen  · 技术社区  · 8 年前

    我有一个。NET核心web应用程序,从SQL Server获取一些数据。我通过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核心/IIS组合有关,而不是防火墙/网络/身份验证问题,但我可能错了。

    3 回复  |  直到 8 年前
        1
  •  2
  •   Bjarte Aune Olsen    8 年前

    问题很简单,我看到了错误的连接字符串。

    我有appsettings。json包含一个连接字符串和appsettings。生产json包含另一个。

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

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

        2
  •  1
  •   Faraz Ahmed    7 年前

    我通过添加 本地系统 身份 在网站中 应用程序池

    步骤:

    1. 选择网站应用程序池
    2. 单击鼠标右键,然后单击“高级设置”
    3. 单击Identity,并将其更改为 本地系统
        3
  •  0
  •   mukesh joshi    8 年前

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