Chr*_*ett 9 .net c# http .net-core .net-6.0
HttpClient调用超时/取消的方法有多种:通过设置HttpClient.Timeout属性、传入 a CancellationToken、使用自定义HttpMessageHandler等。所有这些方法的问题是,无论服务器是否满足超时要求,调用都会被取消根本无法联系到或者只是需要更长的时间才能回复。
我想要实现的行为的一个现有示例是 Postman:
当(对于此示例)我的 ASP.NET Core Web API 当前未运行并且我通过 Postman 发送请求时,它会在 5 秒左右后立即停止。但是当我的 Web API 运行时,我通过 Postman 发送请求,然后在代码中命中断点或添加延迟或其他内容,然后 Postman 将等待其设置中指定的毫秒数(= 超过 5 秒)。
这就是我想要的工作。我的 HTTP 请求有两个不同的超时。一种用于等待与服务器的连接,另一种用于等待其响应。如果在等待响应期间与服务器的连接中断时呼叫也会被取消,那就完美了。在 C# 中(使用 .NET 6)是否可以实现类似的功能?如果可以,如何实现?
实例化时HttpClient,您可以提供 的实现System.Net.Http.HttpMessageHandler,我相信默认实现是SocketsHttpHandler。
SocketsHttpHandler您可以提供连接超时。
var handler = new SocketsHttpHandler
{
ConnectTimeout = TimeSpan.FromSeconds(5)
};
var client = new HttpClient(handler);
// stuff as usual...
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用健全性检查,因为不能保证如果第一个调用成功,第二个调用也会成功。
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |