この質問には以前は答えられていたが、回答が私に役に立たなかったのであれば申し訳ありません。私は私のWebViewのためのイベントがあります。HttpClient getAsync大きなファイルにぶら下がって
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ファイルでうまく機能しているようです。それは> 10メガバイトているPDFファイルに来るときしかし、アプリケーションは単に次の行でハング:
するvar応答= client.GetAsync(URL)を待ちます。
私はこの作業を行うために何ができますか?ありがとうございます!
注:私はSystem.Net.Http.HttpClientではなくWindows.Web.Http.HttpClientを使用しています。
編集:client.GetAsync(url)
をスキップして、var buffer = await client.GetBufferAsync(url);
を直接実行しようとしました。これもハングアップします。
configのmaxRequestLengthプロパティを更新しましたか? GetAsyncをReadAsStreamAsyncに変更し、Streamをファイルに書き込むことを検討しましたか?ファイルはメモリにダウンロードされませんが、ファイルに直接保存されると思います。 –