You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排查ASP.NET Core 8 MVC容器化项目与SQL Server Docker容器连接问题

解决ASP.NET Core 8 MVC容器化连接SQL Server失败问题

核心问题定位

你拉取的是SQL Server镜像,但连接字符串使用了MySQL的配置(3306端口、root用户、mysql-container容器名),这是导致连接失败的首要原因,先修正这个核心矛盾。


步骤1:修正连接字符串

SQL Server默认端口为1433,默认管理员用户是sa,连接字符串需匹配SQL Server的配置规则。假设你运行SQL Server容器的命令为:

docker run -d --name sqlserver-container --network your-network -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong!Passw0rd" mcr.microsoft.com/mssql/server:2022-latest

则正确的连接字符串应为:

"ConnectionStrings": {
    "DefaultConnection": "Server=sqlserver-container,1433;Database=ProductsDB;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=True;"
}

注意:

  • Server字段中,容器名与端口可用逗号或冒号分隔(如sqlserver-container:1433)
  • 必须添加TrustServerCertificate=True,因为容器内SQL Server使用自签名证书,ASP.NET Core默认不信任
  • 密码需符合SQL Server复杂度要求(至少8位,包含大小写、数字、特殊字符)

步骤2:检查SQL Server容器状态

用以下命令确认容器是否正常运行:

docker ps

若容器未启动,执行docker start sqlserver-container启动;若启动失败,查看日志排查原因:

docker logs sqlserver-container

重点关注日志中是否有密码不符合要求、端口冲突等提示。

步骤3:验证容器网络连通性

进入ASP.NET Core容器,测试与SQL Server容器的网络连通性:

# 进入ASP.NET Core容器
docker exec -it your-aspnet-container bash
# ping SQL Server容器名,确认网络可达
ping sqlserver-container

若ping不通,检查两个容器是否在同一网络:

# 查看SQL Server容器所属网络
docker inspect sqlserver-container | grep Networks
# 查看ASP.NET Core容器所属网络
docker inspect your-aspnet-container | grep Networks

若不在同一网络,将ASP.NET Core容器加入目标网络:

docker network connect your-network your-aspnet-container

步骤4:确认目标数据库已存在

SQL Server不会自动创建数据库,需手动创建ProductsDB:

  1. 进入SQL Server容器的命令行:
docker exec -it sqlserver-container /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrong!Passw0rd
  1. 执行创建数据库的SQL语句:
CREATE DATABASE ProductsDB;
GO

内容的提问来源于stack exchange,提问作者Usama Ikram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:51:07