WinRTでWebページをダウンロードすると、例外がスローされます

StackOverflow https://stackoverflow.com/questions/8300986

  •  22-10-2019
  •  | 
  •  

質問

このコードを使用して、メトロスタイルのアプリでWebページをダウンロードしています。

    public static async Task<string> DownloadPageAsync(string url)
    {
        HttpClientHandler handler = new HttpClientHandler();
        handler.UseDefaultCredentials = true;
        handler.AllowAutoRedirect = true;
        HttpClient client = new HttpClient(handler);
        HttpResponseMessage response = await client.GetAsync(url);

        response.EnsureSuccessStatusCode();

        string responseBody = response.Content.ReadAsString();
        return responseBody;
    }

問題は、ラインの場合です client.GetAsync(url) 実行すると、次のような例外がスローされます。

An error occurred while sending the request. タイプから: HttpRequestException.

編集:

Innerexceptionを使用して詳細情報を入手しました。最初にスローされた例外はです SocketException 以下のメッセージがあります:

An attempt was made to access a socket in a way forbidden by its access permissions

at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)

編集2:Microsoftからサンプルをダウンロードして実行しましたが、同じエラーが発生しました。http://code.msdn.microsoft.com/windowsapps/httpclient-upload-sample-f1abcc4e

The error is shown in the picture

編集3:これを別のマシンで実行しましたが、正常に機能しました。ですから、コードには何の問題もないと思います。私はソリューションをコピーしましたが、それは解決策にも問題がないことを意味します。 Windows開発者のプレビューを再インストールして、問題が修正されるかどうかを確認しようとしています。

役に立ちましたか?

解決

わかった。答えを見つけました。例外は、Windows 8 Developer PreviewにNetLimiter製品をインストールし、どういうわけかアプリがインターネットにアクセスすることを妨げたためです。

アップデート:まず第一に、これはで動作するコードです 毎日 Windows 8のバージョン。

    public static async Task<string> DownloadPageAsync(string url)
    {
        try
        {
            HttpClientHandler handler = new HttpClientHandler { UseDefaultCredentials = true, AllowAutoRedirect = true };
            HttpClient client = new HttpClient(handler);
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            string html = await response.Content.ReadAsStringAsync();
            return html;
        }
        catch (Exception)
        {
            return "";
        }
    }

第二に、これがうまくいかない場合は、アプリがインターネットにアクセスするのを妨げるネットワーク関連のソフトウェアがあります。人気のあるケースの1つです プロキシファイア. 。 proxifierがインストールされている場合 メトロスタイルアプリはインターネットにアクセスできません。 それを機能させるには、私のブログを参照してください:

http://anoori.me/blog/general/use-proxifier-in-windows-8-without-fiddler2

他のヒント

NetLimiterがローカルホストプロキシを介してインターネットリクエストを実行していることを確認してください。アプリには、ローカルネットワークへのそのようなアクセスを可能にする「ローカルネットワーク」機能がありませんでした

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top