我有一个.NET Core Web应用程序,它从SQL Server中获取一些数据。我通过互联网连接到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;"
}
但是当我尝试在同一台计算机上运行同一个网站时,我收到以下错误消息:
SqlException :建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:TCP提供者,错误:0 - 没有这样的主机。)
我怀疑这与dotnet核心/ IIS组合有关,而不是防火墙/网络/身份验证问题,但我可能错了。
答案 0 :(得分:0)
您需要在sql server上启用TCP / IP协议。请使用以下链接: Why am I getting "Cannot Connect to Server - A network-related or instance-specific error"?
答案 1 :(得分:0)
问题很简单,我正在查看错误的连接字符串。
我的appsettings.json包含一个连接字符串,appsettings.Production.json包含另一个连接字符串。
使用IIS Express或Kestrel运行应用程序时,会使用第一个应用程序,但是当我发布应用程序然后在IIS下运行它时,环境将设置为“生产”,而使用生产设置。
问题是生产连接字符串指向不再存在的数据库服务器。
答案 2 :(得分:0)
我通过在应用程序池网站的身份中添加 LocalSystem 解决了此问题。
步骤: