C# WPF WebView2传参至HTML页面遇加载错误求助
本地HTML带参数访问错误原因分析
你在WPF应用中用内置浏览器加载本地HTML(基于Google Maps API展示数据),无参数时能正常访问,添加经纬度参数后出现Not allowed to load local resource和ERR_FILE_NOT_FOUND错误,核心原因有三个:
1. URI格式解析错误
直接在本地文件路径后拼接查询参数的方式不符合file://协议的URI规范。浏览器会把拼接后的参数部分当成文件路径的一部分,无法正确识别实际的HTML文件位置,从而抛出ERR_FILE_NOT_FOUND错误——比如原代码里直接拼接?lat=xxx&lng=xxx,浏览器会尝试寻找名为mapview.html?lat=xxx&lng=xxx的文件,自然找不到。
2. 本地文件的安全访问限制
WPF内置的WebBrowser控件(基于IE或EdgeWebView2)受浏览器安全策略限制,本地文件(file://协议)加载时使用查询参数会被判定为不安全的资源访问行为,触发同源策略限制,导致Not allowed to load local resource错误。浏览器默认禁止本地文件通过参数传递的方式加载,防止恶意脚本利用参数读取本地文件系统。
3. 路径拼接的语法问题
原代码中路径拼接使用"\html\mapview.html",C#字符串中的反斜杠是转义字符,虽然\h不是有效转义序列会被保留,但这种写法不规范,容易引发路径解析异常。正确的写法应该用逐字字符串@"\html\mapview.html"或者正斜杠"/html/mapview.html"来避免转义问题。
原代码问题示例
String sURL = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\html\mapview.html"; Uri uri = new Uri(sURL+"?lat="+lat+"&lng="+lng+""); webBrowser1.Source = uri;
内容的提问来源于stack exchange,提问作者TheExtraSpicyBeef
相关产品推荐
相关产品推荐

