请求的资源正在使用中。 (HRESULT 异常:0x800700AA)- Microsoft WebView

The requested resource is in use. (Exception from HRESULT: 0x800700AA) - Microsoft WebView

我有以下代码来启动 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 -版本 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()

通过查看您包含的异常,它表明同一个 userdatafolder 被多个 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));

但是,您应该考虑在程序关闭时再次删除该文件夹(否则您会得到很多临时文件夹)。