Request.GetResponseAsync()在后台任务中不起作用,没有引发异常
本文关键字:异常 不起作用 GetResponseAsync 后台任务 Request | 更新日期: 2023-09-27 18:02:23
我正在用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();
这种情况对我来说很少见。我上传了一段视频到YouTube上,这样你就可以看到它发生的过程了。我已经看了两个多小时了,还在继续。
编辑:我已经改变了类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)
我也有同样的问题。应用程序关闭,没有任何异常。即使在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)
{
}
你可以绕过这个问题