在调用 EnsureCoreWebView2Async 时,在 WPF 中打开 WebView2 导致 System.UnauthorizedAccessException

Opening WebView2 in WPF causes System.UnauthorizedAccessException while calling EnsureCoreWebView2Async

当从 COM Office 插件打开带有 WebView2 组件的 WPF window 时,在调用 EnsureCoreWebView2Async(null) 期间发生以下错误。 Office 应用程序 window 被设置为新 WPF window.

的所有者

System.UnauthorizedAccessException: 'Access denied (Exception HRESULT: 0x80070005(E_ACCESSDENIED))'

有趣的是,当从纯 WPF 应用程序调用相同的 window 时,window 和 webview2 工作完美。同样没有 WebView2 组件 window 工作。

这个问题显然与 webview 试图在错误的位置创建文件(例如缓存)有关,很可能是应用程序文件夹。在 CoreWebView2CreationProperties 中,可以调整此行为并指定不同的文件夹。

在 WPF 中使用的示例 XAML:

 <wv2:WebView2>
     <wv2:WebView2.CreationProperties>
         <wv2:CoreWebView2CreationProperties UserDataFolder="C:\Temp\myfolder"/>
     </wv2:WebView2.CreationProperties>
 </wv2:WebView2>