Request.GetResponseAsync()在后台任务中不起作用,没有引发异常

时间:2015-07-12 19:18:43

标签: c# webrequest background-task getresponse

我正在使用Visual Studio进行通用Windows平台应用,我面临一个非常奇怪的问题。它是Windows运行时组件的后台任务。如果删除了有问题的代码部分,后台任务执行没有问题。

当到达代码时,执行第一个句子(WebRequest request = WebRequest.Create(_finalURI);),但WebResponse response = await request.GetResponseAsync();立即停止后台任务,毫无例外,没有任何内容。很奇怪。

     WebRequest request = WebRequest.Create(_finalURI);
     WebResponse response = await request.GetResponseAsync(); // Here it closes
     Stream dataStream = response.GetResponseStream();
     StreamReader reader = new StreamReader(dataStream);
     textResponse = reader.ReadToEnd();

这对我来说是非常罕见的情况。 I uploaded a video to YouTube so you can see it as it happens。我已经度过了两个多小时:(并继续努力。

编辑:

我已更改为班级HttpClient并且它的行为相同。

var httpClient = new HttpClient();
textResponse = await httpClient.GetStringAsync(_finalURI); // Here it closes
httpClient.Dispose();

编辑2:

方法签名,按照Scott Chamberlain的要求:

public async Task<ArticleList> GetArticleList(ArticleAttributes attributes,
ImageResFromAPI imageres, string singleArticle)

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。申请截止,没有任何例外。即使在AppDomain.CurrentDomain.UnhandledException

它非常奇怪,但如果您使用,则不使用await request.GetResponseAsync();

var webResponseTask = request.GetResponseAsync();

await Task.WhenAll(webResponseTask);

if (webResponseTask.IsFaulted)
  throw webResponseTask.Exception;

using (var webResponse = webResponseTask.Result)
{
}

你可以绕过这个问题。