0

我有 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;
            }
        }
    }
4

0 回答 0