MAUI Blazor Android平台加载本地资源报Not allowed to load local resource错误
问题原因
Android平台Blazor WebView默认启用安全限制,禁止直接加载file://协议指向的外部存储、应用私有目录下的本地文件,因此会抛出该报错。
解决方案
根据你使用的资源类型选择对应方案即可:
- 场景1:打包到APP内的静态图片资源
直接将图片放到Blazor的wwwroot目录,或者MAUI项目的Resources/Raw目录下(需将文件生成操作设置为MauiAsset),直接用相对路径引用即可,示例:<img src="/img/0.jpg" alt="静态图片"> - 场景2:动态生成/下载的本地图片(如拍照输出、用户下载到本地的图片)
将本地文件转成Base64编码后绑定到img的src属性,示例C#代码:
前端绑定代码:// 读取本地文件字节流,需先申请对应存储权限 var fileBytes = await File.ReadAllBytesAsync("/sdcard/0.jpg"); var base64Str = Convert.ToBase64String(fileBytes); // 按图片格式拼接Base64前缀,此处以jpeg为例 string imgSrc = $"data:image/jpeg;base64,{base64Str}";<img src="@imgSrc" alt="本地图片"> - 方案3:修改WebView配置放开限制(仅建议测试环境使用,存在安全风险)
在Platforms/Android/MainActivity.cs的OnCreate方法中添加如下配置:
配置后即可直接用blazorWebView.Settings.AllowFileAccess = true; blazorWebView.Settings.AllowContentAccess = true;file://路径加载本地资源。
提示:如果需要读取外部存储路径下的文件,需提前在
AndroidManifest.xml中声明READ_EXTERNAL_STORAGE权限,且运行时要动态申请用户授权。
内容的提问来源于stack exchange,提问作者Roman Tabachuk
相关产品推荐
相关产品推荐

