Xamarin Forms/Mobile Blazor Bindings iOS应用图片不显示Android正常问题
问题原因
该问题是iOS和Android平台的文件系统特性差异,以及Mobile Blazor Bindings的跨平台路径解析规则共同导致的:
- Android文件系统默认对路径大小写不敏感,只要文件名和目录名的字符匹配,大小写不一致也能正常读取资源;iOS的文件系统则是严格大小写敏感,路径和实际文件的大小写只要有一处不符就会加载失败。
- 旧版本的Mobile Blazor Bindings预览版存在iOS端WebView解析wwwroot相对路径的已知bug,也会导致静态图片加载失败。
解决方法
你可以按照以下顺序逐一排查修复:
- 校验路径大小写完全匹配:确认实际的wwwroot下目录名是
Images(首字母大写)还是images小写,图片文件名是Image.png还是image.png,保证razor页面中src属性写的路径和实际文件、目录的大小写完全一致。 - 修正文件属性:除了设置「始终复制到输出目录」外,还要选中
Image.png文件,在属性面板把「生成操作」修改为Content。 - 调整路径写法:可以将路径改为带根路径标识的写法
<img src="/Images/Image.png" style="max-width: 100%;"/>,也可以注入NavigationManager拼接绝对路径避免跨平台解析差异:@inject NavigationManager NavManager <h3>Test Image</h3> <img src="@($"{NavManager.BaseUri}Images/Image.png")" style="max-width: 100%;"/> - 升级依赖版本:将Mobile Blazor Bindings相关的Nuget包升级到0.5及以上的正式版,旧预览版的iOS静态资源加载bug已经在后续版本修复。
内容的提问来源于stack exchange,提问作者user2209634
相关产品推荐
相关产品推荐

