为什么我不能在HTTP响应头中设置'允许'?

时间:2013-01-11 20:51:50

标签: c# asp.net-mvc asp.net-web-api

我使用ASP.NET Web Api编写了一个RESTful 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;
}

但是我没有在我的回复中获得允许标题,而是获得了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."}

是否可以设置该标题?

2 个答案:

答案 0 :(得分:13)

如错误消息所示,您必须使用带有HttpContent个对象的内容标头。

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

必须承认这是一种奇怪的API ......

答案 1 :(得分:2)

允许是内容标题。

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