2012-01-02 2 views
1

Я пытаюсь вернуть заголовок сущности «Разрешить» в ответном сообщении, и я получаю следующее сообщение:Возвращение «Разрешить» Entity заголовок с HTTPResponseMessage в WCF Web API

{ "Заголовок не может быть добавлен . Убедитесь в том, чтобы добавить заголовки запросов к 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

+0

Я думаю, что это потому, что в RFC «Разрешить» называется «заголовок объекта», тогда как другие - заголовки ответов. –

+0

В качестве примечания стороны вам не нужно указывать метод = «Удалить» явно, если вы используете MapServiceRoute. Он схватит удаление по соглашению с именем метода «DeleteOrder» –

Смежные вопросы