我正在尝试支持UWP WebView2上的文件下载。
不确定我是否做错了什么,或者这是否是一个错误,但我一直将状态更改更新为UserCanceled中断。
下面是我在主页上测试它的方式:
public MainPage()
{
this.InitializeComponent();
wv2.EnsureCoreWebView2Async().AsTask().ContinueWith(async (task) =>
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
wv2.CoreWebView2.DownloadStarting += OnDownloadStarting;
wv2.CoreWebView2.Navigate("http://demo.borland.com/testsite/downloads/downloadfile.php?file=dotNetFx40_Full_x86_x64.exe&cd=attachment+filename");
});
});
}
private void OnDownloadStarting(Microsoft.Web.WebView2.Core.CoreWebView2 sender, Microsoft.Web.WebView2.Core.CoreWebView2DownloadStartingEventArgs args)
{
Trace.WriteLine("DownloadStarting");
var downloadOp = args.DownloadOperation;
args.DownloadOperation.StateChanged += (sender2, args2) =>
{
var state = downloadOp.State;
switch (state)
{
case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.InProgress:
Trace.WriteLine("Download StateChanged: InProgress");
break;
case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.Completed:
Trace.WriteLine("Download StateChanged: Completed");
break;
case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.Interrupted:
Trace.WriteLine("Download StateChanged: Interrupted, reason: " + downloadOp.InterruptReason);
break;
}
};
}
我还尝试将ResultFilePath设置为TemporaryFolder或用户的DownloadsFolder,并为应用程序提供了这些受限功能-- <rescap:Capability Name="broadFileSystemAccess" />
和<rescap:Capability Name="runFullTrust" />
。
但是,对于相同的中断UserCanceled错误,我始终得到一个单一的状态更新。
下面是一个演示问题的示例项目:https://github.com/nirbil/WebView2FileDownload
有什么想法吗?
发布于 2022-03-09 02:44:04
但是,对于相同的中断UserCanceled错误,我始终得到一个单一的状态更新。
这是已知问题的WebView2下载文件。我发现edge成员已经确认了这一点。我们有一个已知的问题,下载还不能在UWP中工作(由于文件权限)。我们已经在进行修复,并将在下个月内进行测试。我正在将我们现有的工作与这个问题联系起来,以跟踪它何时完成。谢谢!请注意随后的更新。
发布于 2022-07-24 11:34:06
请参阅有关此问题的进展这里。这是从上面的链接复制下载所需的当前过程。
和
Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", @"C:\Program Files (x86)\Microsoft\Edge Dev\Application\105.0.1300.0");
https://stackoverflow.com/questions/71392048
复制相似问题