2012-01-02 46 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

相關問題