Использование JSON и gzip вместе в WCF - PullRequest
0 голосов
/ 10 февраля 2019

Мне нужно создать конечную точку на стороне сервера (WCF), которая будет принимать запросы от клиента, которые будут содержать заголовки:

Content-Type : application/json
Content-Encoding : gzip
Accept-Encoding : gzip

Это возможно завершить без реализации пользовательского MessageEncodingBindingElement?Примерно так:

 <customBinding>
     <binding name="gzipbinding">
        <binaryMessageEncoding compressionFormat="GZip"/>
        <webMessageEncoding />
        <httpTransport/>
     </binding>
  </customBinding>

Но это исключение, потому что стек связывания может содержать только один encodingBindingElement.

1 Ответ

0 голосов
/ 11 февраля 2019

Да, в пользовательской привязке разрешен только один элемент привязки кодировки.На мой взгляд, мы могли бы добиться того, что вы хотите, в следующем методе.Сначала определите пользовательскую привязку, включая BinaryMessageEncoding, и установите формат сжатия равным Gzip.

<binaryMessageEncoding compressionFormat="GZip">

Затем, используя строку JSON в качестве передаваемых параметров.

JsonConvert.SerializeObject(person);

И клиент выбираетзначение путем десериализации параметров.

Person person = JsonConvert.DeserializeObject<Person>(proxy.GetPersonDetailWithJson("123"));

Следует отметить, что в некоторых указанных случаях следует избегать сериализации json, поскольку использование json для сериализации и десериализации объекта требует времени и ресурсов (ЦП, ОЗУ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...