gpt4 book ai didi

c# - 为什么 HttpResponseException 只允许异步读取其消息?

转载 作者:行者123 更新时间:2023-11-30 15:17:44 25 4
gpt4 key购买 nike

我正在编写一个单元测试方法来执行代码,在我的测试条件下,预计会抛出带有特定响应消息的 HttpResponseException。

我的测试方法代码的相关部分如下所示:

try
{
MyClassBeingTested.MyWebServiceMethodBeingTested(myParameters);
}
catch (HttpResponseException ex)
{
string errorMessage = await ex.Response.Content.ReadAsStringAsync();
Assert.IsTrue(errorMessage.Contains("My expected error message string"));
return;
}
Assert.Fail("Expected HttpResponseException didn't get thrown");

此代码有效,测试通过。

但是,我想更好地理解为什么我读取错误消息的代码需要以这种方式构造。 HttpResponseException 类仅提供对其消息的异步访问。因此,我需要通过 ReadAsStringAsync() 获取消息,而不仅仅是通过执行类似 ex.Response.Content.Message 的操作来同步获取消息.

我觉得我可能遗漏了一些有关 HttpResponseException 类为何如此工作的信息。 HttpResponseException 不提供对其响应消息的同步访问的原因是什么?

最佳答案

The HttpResponseException class only provides async access to its message.

HttpResponseException 为您提供对 HTTP 响应消息 (Response) 的同步访问,它为您提供对其内容 (Content) 的同步访问。 HTTP 流的内容始终是异步读取的。在某些用途中,HTTP 流的内容在使用时已完全存在于内存中;在其他用途​​中,HTTP 流的内容通过网络流式传输。

例如,如果您使用 HttpCompletionOption.ResponseHeadersRead 发出 HTTP 请求,则响应内容将被流式传输,并且可以在响应内容实际发生之前检查状态代码并引发异常到达运行代码的框。

关于c# - 为什么 HttpResponseException 只允许异步读取其消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com