【发布时间】:2022-11-11 11:51:44
【问题描述】:
我有一个.net 框架 4.7.2 应用程序与 azure 数据库.我为此应用程序创建了一个 docker windows 容器。当我在本地机器上的 Docker 容器中启动这个应用程序时,它给出了一个错误:
[Win32Exception (0x80004005): 找不到网络路径]
[SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)]
连接字符串:
connectionString="Data Source=tcp:servername.database.windows.net,1433;Database=databasename;User ID=testuser;Password=testpassword;Trusted_Connection=False;MultipleActiveResultSets=True;Encrypt=True" providerName="System.Data. SqlClient"
码头工人文件:
来自 mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
ARG 源
WORKDIR /inetpub/wwwroot
复制 ./bin/Release/Publish/ 。
我的 IP 地址已添加到 azure 数据库中,当我从本地计算机通过 SQL 管理工作室连接时,它可以正常工作。此外,它工作正常 与视觉工作室。
我相信我的码头工人可以上网。当我在 docker 容器内 ping google.com 时,它会返回结果 ping google
C:\inetpub\wwwroot>ping google.com
使用 32 字节数据 ping google.com [172.217.166.14]:
来自 172.217.166.14 的回复:字节=32 时间=19ms TTL=118
来自 172.217.166.14 的回复:字节=32 时间=19ms TTL=118
来自 172.217.166.14 的回复:字节=32 时间=19ms TTL=118
来自 172.217.166.14 的回复:字节=32 时间=19ms TTL=118
172.217.166.14 的 Ping 统计信息:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
大约以毫秒为单位的往返时间:
Minimum = 19ms, Maximum = 19ms, Average = 19ms
C:\inetpub\wwwroot>
有人可以指导我如何将我的应用程序连接到 docker 容器内的 Azure 数据库吗?
【问题讨论】:
-
我不认为错误消息来自使用该连接字符串的一段代码。
provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server与Data Source=tcp:anyServerNameOrIpAddress;中 TCP 驱动程序(非命名管道)的使用无关 -
除了...要在
database.windows.net上使用 Azure SQL 实例,特别是基于 Azure 的身份验证机制,您可能希望从旧的System.Data.SqlClient命名空间和类切换到现代且受更好支持的Microsoft.Data.SqlClient命名空间和类。 -
我检查了堆栈跟踪,错误发生在以下行:WebSecurity.InitializeDatabaseConnection("connectionstringName", "Databasename", "Id", "Name", autoCreateTables: false);我将尝试使用“Microsoft.Data.SqlClient”并更新您,但在我的本地机器(Visual Studio)上,代码正在使用“System.Data.SqlClient”
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
标签: sql-server azure docker .net-4.8 windows-container