2012-01-02 3 views
1

내가 응답 메시지 내에서 '허용'엔티티 헤더를 반환하기 위해 노력하고있어 나는 다음과 같은 메시지가 계속 :는 WCF 웹 API에 HTTPResponseMessage와 엔티티 헤더 '허용'을 반환

이 이

{ "헤더를 추가 할 수 없습니다 . 객체 HttpContent에 HttpResponseMessage에 응답 헤더 및 콘텐츠 헤더, HttpRequestMessage에 요청 헤더를 추가해야합니다 "}

는 여기에 코드입니다 :.

[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

+0

나는 RFC에서 '허용'이 '엔티티 헤더'라고 불리는 반면 다른 것은 응답 헤더이기 때문에 생각합니다. –

+0

참고로 MapServiceRoute를 사용하는 경우 명시 적으로 Method = "Delete"를 지정할 필요가 없습니다. 그것은 "DeleteOrder"메소드 이름의 관례에 따라 삭제를 가져옵니다. –