使用新的 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 生产服务器上禁用“尝试重新连接到服务器”消息

Blazor 无法连接到 ASP.NET Core WebApi (CORS)

如何使用 asp net core 2 连接到 SQL Server 2008?