Столкнувшись именно с этой проблемой, я решил добавить IPipelineContributor для обработки запросов HEAD.Участник был инициализирован следующим образом:
public void Initialize(IPipeline pipelineRunner)
{
// We're going to modify the HTTP method, so allow Rasta to have a go first
pipelineRunner.Notify(PreProcessRequest).After<HttpMethodOverriderContributor>();
}
На этапе предварительной обработки я переключил метод HTTP с HEAD на GET, чтобы запрос был обработан как обычно.
static PipelineContinuation PreProcessRequest(ICommunicationContext arg)
{
if (arg.Request.HttpMethod == "HEAD")
{
// Change the method to GET to allow normal processing
arg.Request.HttpMethod = HttpMethod.GET.ToString();
}
return PipelineContinuation.Continue;
}
В конце конвейера заголовки ответа записываются как положено, но в тело ничего не записывается.