我有下面的代码来启动webview
var env = await Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(userDataFolder: Path.Combine(Path.GetTempPath(), $"{Environment.UserName}_Browser"));
await webView21.EnsureCoreWebView2Async(env);
var url = $"Field1=A2&TypeId=1&ItemId=1234";
var postData = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(url));
var request = webView21.CoreWebView2.Environment.CreateWebResourceRequest("https://xxxx/xxxx", "POST", postData, "Content-Type: application/x-www-form-urlencoded");
webView21.CoreWebView2.NavigateWithWebResourceRequest(request);
根据我的理解,当多个用户在同一台服务器上使用应用程序时,提供唯一的userDataFolder不应该造成问题。它适用于某些用户,但对于一些用户则抛出异常。我遗漏了什么吗?
使用Microsoft.Web.WebView2 -Version 1.0.1108.44
异常
System.Runtime.InteropServices.COMException (0x800700AA): The requested resource is in use. (Exception from HRESULT: 0x800700AA)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at Microsoft.Web.WebView2.Core.CoreWebView2Environment.<CreateCoreWebView2ControllerAsync>d__54.MoveNext()
发布于 2022-02-10 20:35:35
通过查看异常(包括在内),它指示多个WebView2
实例使用相同的WebView2
。为了解决这个问题,我建议您为运行的每个WebView2
实例创建一个新文件夹。
要做到这一点,您可以简单地为文件夹创建一个随机名称,而不是每个用户使用一个。就像这样:
Random rnd = new Random();
string subFolder = rnd.Next().toString();
var env = await Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(userDataFolder: Path.Combine(Path.GetTempPath(), $"{Environment.UserName}", subFolder));
但是,当程序关闭时,您应该考虑再次删除该文件夹(否则会得到很多临时文件夹)。
https://stackoverflow.com/questions/71069867
复制相似问题