【发布时间】:2012-01-08 05:10:36
【问题描述】:
我正在使用此代码在我的 Metro Style 应用程序中下载网页:
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
编辑 3: 我在另一台机器上运行它,它运行良好。所以我想代码没有问题。我复制了解决方案,这意味着解决方案也没有问题。我正在尝试重新安装 Windows Developer Preview,看看它是否能解决我的问题。
【问题讨论】:
-
您是否确认该 URL 是您真正想要的?将 URL 粘贴到不同的用户代理(浏览器等)中,以确保它确实以您期望的方式回复。
-
我已经使用
http://www.google.com对其进行了测试。我确定网址没问题。 -
请查看编辑后的帖子。也许新信息会有所帮助。
-
只是为了它,你能尝试用
WebRequestHandler替换HttpClientHandler,这是一个更派生的类吗?
标签: c# .net windows-runtime