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

Angular项目:ASP.NET Core WebAPI连接Ubuntu 22.04 MySQL数据库遇阻

问题排查与解决建议

1. 核心问题:EF Core仍绑定SQL Server连接

执行dotnet ef database update出现SQL Server错误,本质是EF Core没有切换到MySQL提供器,仍在尝试连接原SQL Server数据库,需重点检查两处配置:

  • 替换appsettings.json(或服务器环境变量)中的连接字符串为MySQL格式:
    "ConnectionStrings": {
      "DefaultConnection": "server=localhost;database=你的数据库名;user=用户名;password=密码;port=3306;"
    }
    
  • 修改Program.cs中的EF注册代码,改用MySQL提供器(需先安装Pomelo.EntityFrameworkCore.MySql NuGet包):
    // 替换原SQL Server的注册代码
    builder.Services.AddDbContext<AppDbContext>(options =>
        options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"), 
            new MySqlServerVersion(new Version(8, 0, 36))));
    

2. 验证未发布应用的怀疑点

如果直接在服务器拉取代码执行命令,需确认:

  • 代码已同步最新的连接字符串和EF配置变更
  • 命令执行路径在项目根目录(包含.csproj文件的文件夹)
  • 若用环境变量配置连接字符串,执行echo $ConnectionStrings__DefaultConnection验证变量是否加载

3. MySQL网络连接二次确认

即使已注释bind-address和开放端口,仍需做基础验证:

  • 服务器本地执行mysql -u 用户名 -p,确认能正常登录MySQL
  • 执行netstat -tulpn | grep 3306,检查MySQL是否监听0.0.0.0(允许所有IP访问)
  • 若需远程连接,用telnet 服务器IP 3306测试端口是否可达

4. CORS配置必须保留

Angular前端(浏览器端)跨域访问后端时,浏览器会触发预检请求,必须配置CORS。生产环境建议指定具体前端域名,示例:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAngular", policy =>
    {
        policy.WithOrigins("http://你的前端域名:端口")
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

// 注意中间件顺序:在UseRouting之后、UseAuthorization之前添加
app.UseCors("AllowAngular");

内容的提问来源于stack exchange,提问作者Mike C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:11:00