我有一个容器托管ASP.NET Core应用程序,但是它无法连接到远程服务器上的SQL Server。
错误是:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。
这是我已经检查过的内容:
因此,我认为容器可以看到数据库服务器,但无法连接。我还要检查什么?
非常感谢您的帮助。
更新
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 1433
#our sql server was use this port for connect
EXPOSE 64608
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /src
COPY Web.API.sln ./
COPY MyProject.Core/*.csproj ./MyProject.Core/
COPY MyProject.API/*.csproj ./MyProject.API/
RUN dotnet restore
COPY . .
WORKDIR /src/MyProject.API
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]
运行Docker命令:
docker build -t myproject-api:latest .
docker run -d -p 7991:80 --name myproject-api myproject-api:latest
连接字符串:
"data source=172.16.0.88\\SQL_DEV,64608; initial catalog=MyProject; persist security info=True; user id=myuser; password=mypassword;"
答案 0 :(得分:1)
这很可能是由于连接字符串。
将您的连接字符串更改为以下内容
Server=172.16.0.88\\SQL_DEV,64608;Database=MyProject;UserId=myuser;Password=mypassword
或
Server=172.16.0.88,64608;Database=MyProject;User Id=myuser;Password=mypassword
哪个可行?
答案 1 :(得分:0)
我遇到了同样的问题,我更改了 Dockerfile 映像
我替换它
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
用这条线
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic AS base
现在可以了!