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

将ASP.NET MVC发布至Azure(SQLite)后数据获取失败

问题排查与解决方案

1. 先确认数据库文件是否真的部署到了Azure

你设置了Copy always但没勾选文件发布选项里的包含所有内容文件,这大概率导致数据库文件没被传到Azure:

  • 登录Azure门户,进入你的App Service,打开高级工具 > Go进入Kudu控制台
  • 在Kudu的wwwroot目录下查看是否存在bloodpressuremeasurements.db
    • 如果没有,回到VS发布设置,勾选文件发布选项里的包含所有内容文件重新发布
    • 也可以直接通过Kudu的文件管理器手动把本地的数据库文件上传到wwwroot目录

2. 修正SQLite连接字符串的路径问题

Azure App Service的默认工作目录和本地不一样,直接写Data source=bloodpressuremeasurements.db会导致程序找不到文件:

  • 修改appsettings.json里的连接字符串为绝对路径:
    "ConnectionStrings": {
      "DefaultConnection": "Data Source=\\home\\site\\wwwroot\\bloodpressuremeasurements.db"
    }
    
  • 或者在代码里动态拼接wwwroot路径:
    var dbPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "bloodpressuremeasurements.db");
    optionsBuilder.UseSqlite($"Data Source={dbPath}");
    

3. 解决数据库初始化的问题

你没勾选发布时应用迁移,云端的数据库可能根本没创建或初始化:

  • 如果本地数据库已有测试数据,确保你要发布的是已经执行完所有迁移、包含数据的本地数据库文件
  • 要是想让云端自动执行迁移,先解决之前的发布异常:
    • 去Azure App Service的日志流里查看迁移失败的具体报错信息
    • 确认BloodPressureContext的配置正确,所有迁移类都在项目中
    • 也可以手动在Kudu控制台执行迁移命令:
      dotnet 你的项目名称.dll ef database update
      

4. 检查文件读写权限

SQLite需要对数据库所在目录有读写权限:

  • Azure的wwwroot目录默认有读写权限,别把数据库放在临时目录(比如%TEMP%),临时目录会被定期清理,还可能没有写入权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:00:56