栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

WebView2 使用注意事项

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WebView2 使用注意事项

前言

最近在项目中尝试了使用WebView2,有些问题,不去尝试真的发现不了,于是记录一下,本次只记录使用的注意事项,如果要看安装及介绍,请看之前的文章:
链接: .Net桌面端开发使用WebView2,可以放弃CefSharp?.
链接:WebView2 使用及现状

环境

运行环境:.Net Framework 4.5.2 (由于我的项目是基于452,所以这里没有用.Net 5)
开发环境:VS2019 16.8.2
框架语言:WPF

注意事项 1、WebView2后面的代码全被覆盖

这个问题在上一篇文章里解释了,官方也没有给出解决时间,但这个问题可以采取方法来规避:比如在WebView2后面不写别的UI代码,这个会覆盖的也包括用户控件,所以,可以尽量避免在WV2后面写UI,经过测试,弹窗是不会被覆盖的,那也就是说模态窗口也不影响使用。

2、Cookie的使用

官方对chrome的Cookie管理进行了封装CookieManager,下面看使用

//创建Cookie
var cookie=webView.CoreWebView2.CookieManager.CreateCookie("token", DataExchangeHelper.LoginResult.token, domain, "/");
//设置Cookie
webView.CoreWebView2.CookieManager.AddOrUpdateCookie(cookie);
//获取Cookie
List list = await webView.CoreWebView2.CookieManager.GetCookiesAsync(url);
//删除Cookie
webView.CoreWebView2.CookieManager.DeleteAllCookies();

在这里需要注意,我在测试设置Cookie的时候,发现AddOrUpdateCookie必须在WebView_CoreWebView2InitializationCompleted方法里设置才有效,原因不知为啥。

3、WebView2的后台创建

有的时候需要在后台创建一个WebView2控件,再添加到前端UI里,这里需要注意的是,初始化之前,必须将WebView2的实例先添加到UI里,否则就会初始化失败。比如这样:

//wvBorder是前端Xaml里的一个Border控件
webView = new WebView2();
wvBorder.Child = webView;
InitializeAsync();

我的理解是:无法对一个无父元素的WebView2进行初始化。

4、缓存文件的设置

在制作安装包时,往往会安装在:C:Program Files (x86) 这样的文件夹里,但是在Win10 系统里,这个文件夹的写入是需要管理员权限的,这样你的程序就必须得有管理员权限,于是我在app.manifest里设置


结果是在启动WebView2时会初始化失败,提示没有写入和读取权限,按理说我整个程序都具备管理员权限了,为啥还是不行呢,于是经过一番Github搜索,这里强烈推荐遇到问题时首先在这里查找一下原因:https://github.com/MicrosoftEdge/WebView2Feedback
这个是微软官方的反馈平台,基本上遇到的问题都能找到答案。这个问题的解释是,你调用Webview2时其实用的是你安装的Edge的环境,即并不是你的程序环境,所以你只是给程序设置了管理员权限,但并没有给chrome的内核环境设置,所以官方给出的解决方案是将缓存文件设置在别的路径下,比如:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\OurSoftware";

只要不是在C:Program Files (x86) 或者C:Program Files 里就能正常使用了。

5、打开文件选择控件(open file dialog)

很多网页都会有选择文件功能:,正常点击这个按钮应该会弹出本地的文件浏览窗口来进行文件选择,但在WebView2的实际使用中发现,这个功能并不总是好使,经过一番搜索,发现这个问题居然是因为WV2不支持通过管理员权限启动。什么意思呢,就是你如果是通过管理员权限启动程序,在遇到控件时,点击后就无任何反应,这是Github的Issue,File Open/Save Dialog doesn’t show running w/ elevated privileges
经过测试发现在以下情况下均无法正常使用
1、你的Visual Studio是以管理员权限启动时,此时调试运行的程序
2、你使用Inno Setup打包程序时的使用了管理员权限,在安装完后默认启动程序
3、你的安装路径是C:Program Files (x86) 或者C:Program Files 时

总结

WebView2的使用还是很友好的,只是有些坑不去实战就不会发现,所以记录一下,后续如果再有新的发现,也将更新在这里,总之,WebView2确实比CefSharp友好,默认支持WebRTC,默认支持H.264,而且有微软团队的支持,虽然还存在一些问题,但一个新项目初期,总是在不断完善的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号