很抱歉如果这个问题以前已经有答案了,但是没有一个答案能够帮助我。我有一个WebView的事件:
private async void MainWebView_UnviewableContentIdentified(WebView sender, WebViewUnviewableContentIdentifiedEventArgs args)
{
await downloadFromUri(args.Uri).ConfigureAwait(false);
}
我的downloadFromUri方法会尝试下载一个文件并将其存储在下载文件夹中,最后它将打开该文件:
static async Task downloadFromUri(Uri uri)
{
var url = uri;
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.TryAppendWithoutValidation(
"Authorization Bearer",
" MYTOKEN"
);
Debug.WriteLine("Attempting GET request");
var response = await client.GetAsync(url);
Debug.WriteLine("Got response.. checking " + response.StatusCode);
if (response.IsSuccessStatusCode)
{
Debug.WriteLine("Okay, we've got a response");
var responseFileName = response.Content.Headers.ContentDisposition.FileName;
Debug.WriteLine("Filename: " + responseFileName);
var ManualFile = await DownloadsFolder.CreateFileAsync(responseFileName, CreationCollisionOption.GenerateUniqueName);
Debug.WriteLine("Creating buffer: ");
var buffer = await client.GetBufferAsync(url);
Debug.WriteLine("Writing buffer.");
await Windows.Storage.FileIO.WriteBufferAsync(ManualFile, buffer);
Debug.WriteLine("Done, opening");
var openOptions = new Windows.System.LauncherOptions();
openOptions.DisplayApplicationPicker = true;
var openFile = await Windows.System.Launcher.LaunchFileAsync(ManualFile, openOptions);
}
else
{
Debug.WriteLine(response.StatusCode.ToString());
}
}
事情是这样的,这段代码在小PDF或ZIP文件上似乎工作正常。但是当面对大于10MB的PDF文件时,应用程序在以下行处卡住了:
var response = await client.GetAsync(url);
我该怎么做才能让它正常工作呢?非常感谢!
注:我正在使用Windows.Web.Http.HttpClient而不是System.Net.Http.HttpClient。
编辑:我尝试跳过client.GetAsync(url)并直接运行var buffer = await client.GetBufferAsync(url);。这也导致卡住。