2012-01-02 77 views
1

我想响应消息中返回的“允许”实体头,我不断收到以下消息:返回在WCF的Web API与HTTPResponseMessage“允许”实体头

{“不能添加页眉。确保请求头到HttpRequestMessage,响应头到HttpResponseMessage和内容头添加到HttpContent对象“}

下面的代码片段:

[WebInvoke(UriTemplate = "{id}", Method = "DELETE")] 
     public HttpResponseMessage<Order> DeleteOrder(int id) 
     { 
      HttpResponseMessage<Order> response = null; 

      try 
      { 
       if (id <= 0) 
       { 
        response = new HttpResponseMessage<Order>(HttpStatusCode.BadRequest); 
       } 
       else 
       { 
        // For brevity, I'm assuming that order - 123456 was already served and logged. Hence it cannot 
        // be deleted. Order 12345, however, can be deleted. 
        // Note: The code doesn't actual delete anything. This is just a demonstration of 
        // the DELETE verb 
        if (id == 12345) 
        {      
         return new HttpResponseMessage<Order>(HttpStatusCode.NoContent); 
        } 

        if (id == 123456) 
        {      
         response = new HttpResponseMessage<Order>(HttpStatusCode.MethodNotAllowed); 
         response.Headers.AddWithoutValidation("Allow", "PUT"); 
        } 

        // return '404 - Not Found' status code 
        response = new HttpResponseMessage<Order>(HttpStatusCode.NotFound); 

       } 

       return response; 
      } 
      catch (Exception ex) 
      { 
       return response = new HttpResponseMessage<Order>(HttpStatusCode.InternalServerError); 
      } 
     } 

任何意见将是非常有益的。

感谢,

多尔曼

回答

2

尝试response.Content.Headers代替。

+0

是的,工作! :-)目前的文档没有提到任何东西。 – dormantroot 2012-01-05 00:21:09

+0

我认为这是因为在RFC中,'允许'被称为'实体头',而其他的则是响应头。 – 2012-01-05 08:00:54

+0

请注意,如果您使用MapServiceRoute,则不需要明确指定Method =“Delete”。它将按照惯例从方法名称“DeleteOrder”中获取删除 – 2012-01-07 22:27:57

相关问题