Почему я не могу установить "Разрешить" в заголовке ответа HTTP?

Я написал RESTful API с помощью ASP.NET Web Api. Теперь я пытаюсь заставить его возвращать допустимые глаголы для контроллера. Я пытаюсь сделать это со следующим кодом:

[AcceptVerbs("OPTIONS")]
public HttpResponseMessage Options()
{
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Headers.Add("Access-Control-Allow-Origin", "*");
    response.Headers.Add("Access-Control-Allow-Methods", "POST");
    response.Headers.Add("Allow", "POST");

    return response;
}

Но вместо получения заголовка Allow Header в моем ответе я получаю 500 Internal Server Error. При отладке я получаю следующую ошибку:

{"Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects."}

Возможно ли установить этот заголовок?

Ответ 1

Как говорится в сообщении об ошибке, вы должны использовать заголовки содержимого с объектами HttpContent.

response.Content.Headers.Add("Allow", "POST");

Должен признать, что это своего рода странный API...

Ответ 2

Разрешить заголовок содержимого.

        response.Content.Headers.Allow.Add("POST");