我有 2 个服务(WebApi),一个是使用 IIS 主机的天蓝色云服务,另一个是使用 Owin 主机的天蓝色服务结构无状态服务。有一个像下面这样的处理程序,两个服务都注册这个处理程序来处理上下文(config.MessageHandlers.Add(new ContextHandler()))。
目前,我遇到的是:如果我使用 HTTP HEAD 请求调用云服务 api(只是 ping),这将返回 '405 method not allowed'。但是,如果我调用结构服务,我会得到“无法得到任何响应”和“连接到...时出错”。
调试代码时。对于使用 IIS 的云服务,在下面的代码中,response.Content 没有任何价值。但是对于使用 Owin 的结构服务,response.Content 的值为“405 Method not allowed”。
我的问题是,它们之间有什么区别?由于请求是 HEAD 请求,为什么 Owin 会返回带有内容的响应?
谢谢。
public class ContextHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// initialize context
using (new ApiRequestContextWrapper(request))
{
var context = ApiRequestContext.Current;
context.Log.Trace(
$"API Call {request.Method.Method}
{request.RequestUri.GetLeftPart(UriPartial.Path)}");
var response = await base.SendAsync(request,
cancellationToken).ConfigureAwait(false);
return response;
}
}
}