Разница между OWIN и IIS при обработке HTTP-запроса HEAD, когда API не поддерживает запрос HEAD
У меня есть 2 службы (WebApi), одна из которых - облачная служба Azure, использующая хост IIS, а другая - служба без состояний Azure Service Fabric, использующая хост Owin. Ниже описан обработчик, и обе службы регистрируют этот обработчик для обработки контекста (config.MessageHandlers.Add(new ContextHandler())).
В настоящее время я встретил следующее: если я вызываю облачный сервис api(просто ping), используя HTTP-запрос HEAD, это возвращает "метод 405 не разрешен". Но если я позвоню в службу фабрики, я получу сообщение "Не удалось получить ответ" с "произошла ошибка при подключении к...".
При отладке кода. Для облачной службы, использующей IIS, в приведенном ниже коде response.Content не имеет значения. Но для службы фабрики, использующей Owin, response.Content имеет значение "Метод 405 не разрешен".
У меня вопрос, какая разница между ними? Почему Оуэн будет возвращать ответ с контентом обратно, поскольку запрос является запросом HEAD?
Благодарю.
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;
}
}
}