.NET MAUI Blazor Hybrid应用中wwwroot文件夹访问被拒绝
.NET 8 MAUI Blazor Hybrid 写入wwwroot目录权限问题解决
问题根源
Windows平台下,C:\Program Files\WindowsApps是应用的安装目录,默认处于只读保护状态,仅系统和管理员账户拥有修改权限。本地调试时Visual Studio会为应用赋予临时权限,因此能正常写入;但发布后的应用以普通用户身份运行时,无法对该目录执行写入操作,触发System.UnauthorizedAccessException。
可行解决方案
1. 使用应用专属可写目录(推荐)
放弃向安装目录的wwwroot/videos写入,改用MAUI提供的用户专属可写存储路径:
// 获取应用本地可写根目录 var appDataDir = FileSystem.AppDataDirectory; // 拼接自定义videos文件夹路径 var targetVideoDir = Path.Combine(appDataDir, "videos"); // 确保目录存在,不存在则创建 Directory.CreateDirectory(targetVideoDir); // 执行文件复制操作 File.Copy(sourceFilePath, Path.Combine(targetVideoDir, targetFileName), overwrite: true);
该路径指向用户专属的应用数据目录(如C:\Users\[用户名]\AppData\Local\Packages\[应用包名]\LocalState),完全具备读写权限,且不会受系统权限限制。
2. 配置应用文件权限(辅助补充)
若涉及读取系统媒体库,需在Package.appxmanifest中添加对应权限声明,但这无法解决安装目录只读问题,仅作为场景补充:
<Capabilities> <Capability Name="internetClient" /> <!-- 按需添加媒体库权限 --> <uap:Capability Name="videosLibrary" /> </Capabilities>
3. 不推荐方案:修改安装目录权限
通过管理员权限修改WindowsApps下对应应用目录的权限,会破坏系统安全模型,且客户端部署时操作繁琐,存在安全风险,不建议采用。
内容的提问来源于stack exchange,提问作者John Alexander
相关产品推荐
相关产品推荐

