Domanda

Sto usando questo codice per scaricare una pagina web nel mio Metro Style App:

    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;
    }

il problema è che quando viene eseguito linea client.GetAsync(url), viene generata un'eccezione che dice:

Da An error occurred while sending the request. tipo:. HttpRequestException

EDIT:

Ho usato l'InnerException per maggiori informazioni. La prima eccezione generata è SocketException con il messaggio di seguito:

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)

EDIT 2: Ho scaricato e fatto funzionare il campione di Microsoft e ottengo lo stesso errore: http://code.msdn.microsoft.com/windowsapps/HttpClient- Carica-Sample-f1abcc4e

L

EDIT 3: Ho eseguito questo su un'altra macchina e ha funzionato bene. Quindi credo che ci sia niente di sbagliato con il codice. Ho copiato la soluzione e significa che non c'è niente di sbagliato con la soluzione sia. Sto cercando di ri-installare Windows Developer Preview per vedere se si risolve il problema.

È stato utile?

Soluzione

OK. Ho trovato la risposta. L'eccezione era perché ho installato prodotto NetLimiter su Windows 8 Developer Preview e in qualche modo impedito la mia app di accedere a Internet.

UPDATE: Prima di tutto, questo è il codice di lavoro in ogni versione di 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 "";
        }
    }

In secondo luogo, se questo non funziona, è probabile, si dispone di un software di rete relative impedendo la vostra applicazione per accedere a Internet. Un caso popolare è Proxifier . Se avete installato Proxifier le applicazioni MetroStyle non sarà in grado di accedere a Internet per farlo funzionare, si prega di fare riferimento al mio blog all'indirizzo:.

http://anoori.me/blog/

generale / windows-8-senza-fiddler2 uso-Proxifier-in-

Altri suggerimenti

abbastanza sicuro netlimiter correva la tua richiesta Internet attraverso un proxy localhost, e la vostra applicazione non ha avuto la capacità di "rete locale" che consentirebbe tale accesso alla rete locale

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top