使用新的 ASP.NET Core 应用程序连接到 SQL Server 时出现问题
Posted
技术标签:
【中文标题】使用新的 ASP.NET Core 应用程序连接到 SQL Server 时出现问题【英文标题】:Issue connecting to SQL Server with new ASP.NET Core application 【发布时间】:2019-11-11 19:12:30 【问题描述】:我已将新的 .NET Core 应用部署到生产 Web 服务器,但在连接到另一台服务器上的 SQL Server 数据库时遇到问题。 Web 服务器当前具有在 ASP.NET Web 表单上运行并成功连接到数据库的应用程序。
该应用程序是在 ASP.NET Core 2.1 中开发的。数据库服务器正在运行 SQL Server 2012 Express。该数据库位于名为SQLEXPRESS
的命名实例中,该实例使用动态端口。我不想改变它,因为它是一个生产环境。
这是我在新应用中使用的连接字符串(省略了潜在的敏感信息)
"ConnectionStrings":
"NLogDb": "Server=<server>\\SQLEXPRESS;Database=<database>;User Id=<user>;Password=<password>;",
"DefaultConn": "Server=<server>\\SQLEXPRESS;Database=<database>;User Id=<user>;Password=<password>;"
,
我知道服务器能够相互通信,因为我目前正在运行的应用程序来回通信。我还使用 portQry 从 Web 服务器进行测试,得到以下结果:
c:\PortQryV2>portqry.exe -n intinsap01 -p UDP -e 1434
Querying target system called:
<servername>
Attempting to resolve name to IP address...
Name resolved to 10.190.190.10
querying...
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName <serverName>
InstanceName SQLEXPRESS
IsClustered No
Version 11.0.6020.0
tcp 65069
np \\<serverName>\pipe\MSSQL$SQLEXPRESS\sql\query
ServerName <serverName>
InstanceName RAPIDLOG
IsClustered No
Version 11.0.6020.0
tcp 1433
np \\<serverName>\pipe\MSSQL$RAPIDLOG\sql\query
Z ¶
==== End of SQL Server query response ====
UDP port 1434 is LISTENING
另一个应用程序正在使用以下连接字符串:
<add name="<name>"
connectionString="Data Source=<server>\SQLEXPRESS;Initial Catalog=<database;Persist Security Info=True;User ID=<username>;Password=<password>"
providerName="System.Data.SqlClient" />
当应用程序尝试查询数据库时,我收到以下错误:
System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)
我怀疑我的连接字符串有问题,但我不知道该去哪里。
感谢任何帮助。
【问题讨论】:
你检查了sql配置管理器并启用了网络相关服务吗? 我做到了。问题不在于数据库服务器,而在于我的应用程序中的连接设置。我想通了,并将更新我的答案。谢谢。 【参考方案1】:我知道我的问题是什么。我一直在我的 appsettings.json 文件中尝试不同的连接字符串变体。最终我注意到还有一个名为 appsettings.production.json 的附加文件。其中的连接字符串格式不正确(不确定那里发生了什么)。我最初发布的连接字符串是正确的。
【讨论】:
以上是关于使用新的 ASP.NET Core 应用程序连接到 SQL Server 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 ASP.NET CORE 2 Web API 应用程序连接到 WCF 服务
无法从在 Docker (Linux) 中运行的 ASP.NET Core 连接到 SQL Server 命名实例
如何在 ASP.NET Core 生产服务器上禁用“尝试重新连接到服务器”消息
如何在 ASP.NET Core 生产服务器上禁用“尝试重新连接到服务器”消息