连接ASP.. NET Core容器到远程SQL Server



我正在尝试连接我的ASP。. NET Core应用程序到远程SQL Server。

应用程序使用IIS WScore 2016映像部署。当我在主机上运行应用程序时,它正在工作,但在容器中使用此连接字符串:

Data Source=xx.xxx.xx.xx,1433;Initial Catalog=somedb;User Id=xxxxxx;Password=xxxxx;

或:

Server=xx.xx.xx.xx,PORT_NB;Database=DATABASE;User Id=USER;Password=PASSWORD

但是没有运气-我使用默认的Docker网络。

错误如下:

Error:在建立到SQL Server的连接时发生与网络相关或特定实例的错误。未找到服务器或无法访问服务器。验证实例名是否正确,SQL Server是否配置为允许远程连接。(provider: TCP provider, error: 0 - No such host is known.)

指出:

  1. 服务器允许远程连接
  2. 所有连接字符串都经过测试,可以从主机上运行的应用程序连接到远程SQL Server
  3. 我已经阅读了Docker文档,他们提到了IP转发,但示例是在linux容器上,我没有找到关于将Windows容器连接到远程SQL Server的任何帮助

问题

我的具体问题是如何将容器暴露给外部世界,我可以将我的容器连接到其他远程服务,如远程SQL Server?

我应该使用主机网络还是网桥与IP转发?

帮忙吗?由于

我将连接字符串更改为:

"ConnectionString": "Server=xx.xxx.xx.xx\MSSQLSERVER,1433;Initial Catalog=Dbname;User Id=username;Password=xxxxxxx;"

然后我重新启动AppPoll,它工作了

这个容器当前使用的网络是什么?如果您使用默认网络,那么您正在使用网络地址转换(NAT)。这意味着您正在使用主机IP地址连接到外部网络。所以,你的问题很可能是SQL Server拒绝了来自容器主机IP的连接。

在Windows上的替代方法是使用不同的网络驱动器。有许多选项,我建议您查看更适合您需求的选项:https://cda.ms/4nP

我有同样的错误,尝试从连接字符串中删除端口,如下所示:

"ConnectionString": "Server=ContainerName;Initial Catalog=Dbname;User Id=username;Password=xxxxxxx;"

最新更新