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

C# 为什么我不能设置';允许';在HTTP响应头中?,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我已经使用ASP.NETWebAPI编写了一个RESTfulAPI。现在我试图让它返回控制器允许的动词。我正在尝试使用以下代码执行此操作: [AcceptVerbs("OPTIONS")] public HttpResponseMessage Options() { var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.Add("Access-Control-Allow-Origin

我已经使用ASP.NETWebAPI编写了一个RESTfulAPI。现在我试图让它返回控制器允许的动词。我正在尝试使用以下代码执行此操作:

[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头,而是
500内部服务器错误
。调试时,我收到以下错误:

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

可以设置该标题吗?

正如错误消息所述,必须将内容标题与
HttpContent
对象一起使用

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

必须承认这有点奇怪的API…

Allow是一个内容头

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

是的,很奇怪!谢谢分享答案!是 啊在2616中,它被认为是一个有效负载头,因为很明显,您可以将它与PUT一起发送,以实际更改允许的方法。Httpbis已将其更改为响应头,但对于WebAPI来说已经太晚了!这个API只是不知道它在做什么。我被一个供应商的自定义标题击中,它不允许我添加f***标题。我想我必须编写一个套接字才能让它工作:|如果response.Content为null,则添加
response.Content=newstringcontent(“”
如果response.Content为null,则添加
response.Content=newstringcontent(“”