【发布时间】: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