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

.NET 7.0 Web API调试时遇SQLite Error 14:无法打开数据库文件

问题原因

VS 2022调试时,进程默认使用当前登录用户的普通权限,而C:\Windows\System32是系统级保护目录,普通用户账户没有足够的读写权限——即便手动设置了权限,UAC虚拟化机制也可能将文件访问重定向到用户的虚拟存储目录,导致程序找不到实际的database.db文件。而Windows服务通常以Local System账户运行,该账户拥有系统目录的完全操作权限,因此能正常读写数据库。

解决方案
  • 迁移数据库到非系统目录(推荐)
    将database.db移动到Web API项目的输出目录、项目根目录,或者其他非系统保护的路径(比如C:\ProgramData\YourApiName),然后更新连接字符串:

    // 示例:使用项目根目录的相对路径
    "ConnectionStrings": {
      "DefaultConnection": "Data Source=database.db"
    }
    // 示例:使用绝对路径
    "ConnectionStrings": {
      "DefaultConnection": "Data Source=C:\\ProgramData\\YourApiName\\database.db"
    }
    

    这种方式符合应用部署的最佳实践,避免权限问题和系统目录的安全风险。

  • 以管理员身份启动VS 2022
    右键VS 2022图标,选择「以管理员身份运行」,此时调试进程会获得管理员权限,能够访问C:\Windows\System32下的数据库。但这种方法仅适合临时测试,长期使用会增加权限风险,不建议作为正式解决方案。

  • 修改数据库文件权限(不推荐)
    右键C:\Windows\System32\database.db → 「属性」→「安全」,添加当前登录用户并赋予「读取/写入」权限。不过修改系统目录内文件的权限可能破坏系统安全性,仅在特殊场景下临时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:03:18