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

标签 c# webrequest background-task getresponse

我正在使用 Visual Studio 开发通用 Windows 平台应用程序,但我遇到了一个非常奇怪的问题。它是 Windows 运行时组件上的后台任务。如果删除了有问题的代码部分,后台任务将毫无问题地执行。

当代码到达第一句时 (WebRequest request = WebRequest.Create(_finalURI);) 被执行但是 WebResponse response = await request.GetResponseAsync();立即停止后台任务,无一异常(exception),没有任何事情。很奇怪。

     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)

最佳答案

我也遇到了同样的问题。应用程序无一异常(exception)地关闭。即使在 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)
{
}

你可以绕过这个问题。

关于c# - Request.GetResponseAsync() 在后台任务中不起作用,没有引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31371597/

相关文章:

c# - 无法从传输连接读取数据 : An existing connection was forcibly closed by the remote host in C#

linux - 后台任务的 PID 与使用 ps 列出的任务 PID 不同

ios - 远程通知的后台任务在短时间后暂停

c# - Xamarin Android 中选项卡更改前的验证

c# - 使用安全证书使用 .NET 进行 cURL 请求

c# - 发送多个并行 Web 请求

c# - 如何在 Xamarin iOS 上执行简单的后台任务

c# - 传递数组作为参数

c# - 您如何在 WPF 中仅检查 Visual Studio 2010 设计器(以便不针对 Blend 的设计器)?

c# - 使用 SSL 联系 Active Directory