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

Windows下.NET Maui Blazor WASM移除runFullTrust后访问SQLite权限问题

问题分析与解决方案

错误根源

在Partial Trust模式下,Windows应用沙箱会严格限制文件访问范围:应用仅能访问专属的隔离存储目录(比如LocalFolder,对应.NET MAUI中的FileSystem.AppDataDirectory),而你通过Path.GetFullPath("..", FileSystem.AppDataDirectory)试图跳转至包的根目录(C:\Users\me\AppData\Local\Packages\company.app_ns00xv7ymf8n4),这个操作超出了沙箱允许的权限边界,因此被拒绝。


直接解决方案:修改数据库存储路径

FileSystem.AppDataDirectory本身就是沙箱授权的安全读写目录,无需向上跳转路径。直接使用该目录作为数据库的基础路径即可:

var basePath = FileSystem.AppDataDirectory;
// 拼接数据库文件名示例
var dbPath = Path.Combine(basePath, "your_database.db");

这种方式不需要额外配置权限,Partial Trust模式下可直接正常访问。


若需存储到其他位置的处理方式

如果必须将数据库放在非隔离存储目录(比如Documents库),需遵循以下规则:

  1. 确保已声明对应权限:你当前的清单中已经添加了documentsLibrary权限,这一步没问题。
  2. 使用WinRT Storage API访问:沙箱环境下System.IO的访问范围受限,需通过Windows原生的存储API获取授权目录:
    // 示例:获取Documents库并创建/打开数据库文件
    var documentsFolder = Windows.Storage.KnownFolders.DocumentsLibrary;
    var dbFile = await documentsFolder.CreateFileAsync("your_database.db", Windows.Storage.CreationCollisionOption.OpenIfExists);
    var dbPath = dbFile.Path;
    
    注:若使用documentsLibrary,部分场景下需要在Package.appxmanifest中添加对应文件类型的关联(比如.db),否则可能出现访问异常。

权限补充说明

你当前的权限清单已经覆盖了必要的资源访问权限,针对应用私有存储(FileSystem.AppDataDirectory)无需额外添加Capability,Partial Trust模式下默认拥有读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:52:35