我正在尝试做一些非常聪明或非常愚蠢的事情。也就是说,我的问题是在调用我的HttpMessageHandler中的SendAsync()重写期间,我试图用另一种方法向同一资源发出一个额外的请求来检查一些东西,然后才愿意让原来的请求通过。
这是我自己的HttpMessageHandler的简化版本:
public class MyHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
// before actually doing what we're supposed to, I want to fire a GET request
// to check something.
var checkRequest = new HttpRequestMessage(HttpMethod.Get, request.RequestUri);
var checkResponse = await base.SendAsync(checkRequest, cancellationToken);
if (checkResponse.IsSuccessStatusCode)
{
// Some more checking...
}
return await base.SendAsync(request, cancellationToken);
}
}
除此之外,这不起作用。我的第一个base.SendAsync
调用失败了“500”,我不知道为什么。我也有兴趣知道这是否是在必须从处理程序执行其他请求时向前推进的方式。