使用新的 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 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章