10

我使用 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."}

可以设置该标题吗?

4

2 回答 2

14

正如错误消息所说,您必须将内容标头与HttpContent对象一起使用。

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

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

于 2013-01-11T21:04:31.813 回答
3

Allow 是一个内容标头。

        response.Content.Headers.Allow.Add("POST");
于 2013-01-11T21:10:01.083 回答