Как установить по умолчанию RequestFormat для WCF ServiceContract?

Я пишу веб-сервис, который имеет много методов. Все они настроены примерно так:

[OperationContract]
    [WebInvoke(
        BodyStyle = WebMessageBodyStyle.Bare,
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "x/y/z")]
    void someMethod(int x, int y, int z);

Что я хочу сделать, это просто установить по умолчанию BodyStyle / RequestFormat / ResponseFormat все в файле web.config. Теперь я знаю, что могу сделать это:

  <endpointBehaviors>
    <behavior name="webHttpBehavior">
      <webHttp defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json" />
    </behavior>
  </endpointBehaviors>

Но, похоже, нет атрибута для RequestFormat. Как я могу установить по умолчанию RequestFormat в JSON?

2 ответа

Решение

Типы запросов автоматически интерпретируются WCF, вам не нужно указывать значение по умолчанию RequestFormat для вашего обслуживания операции.

Если вы пытаетесь применить поддерживаемый формат запроса, см. Соответствующую статью SO по применению типов содержимого запроса.

Примечание: не имеет смысла назначать RequestFormat для WebGet операция. По определению WebGet не может содержать Body где будет существовать формат JSON. Лучшим примером здесь будет WebInvoke,

Установить automaticFormatSelectionEnabled собственность на true в элементе webHttp в файле web.config

<behaviors>
   <endpointBehaviors>
      <behavior>
         <webHttp automaticFormatSelectionEnabled="true" />
      </behavior>
   </endpointBehaviors>
</behaviors>


например: вы можете установить Accept:application/json в конце получения и получить результат JSON.

почтальон экраны

Ответ Json

================================================== ==================

Ответ XML


https://msdn.microsoft.com/en-us/library/ee476510(v=vs.110).aspx

Другие вопросы по тегам