WCF сжатие REST

У меня есть сервис REST, который возвращает большой блок XML о 150k ценности.

например, http://xmlservice.com/services/RestService.svc/GetLargeXML

Поэтому я хочу сжать ответ с сервера, поскольку GZIP должен уменьшить это до чего-то намного меньшего. Ища везде я не могу ни за что в жизни найти пример того, как выполнить сжатие для сервисов REST WCF.На помощь!!

Примечание: Мой сервис размещается третьим лицом, и я не МОГУ сделать этого через IIS, поскольку он не поддерживается ими.

7
задан PhilJ 9 September 2009 в 21:45
поделиться

1 ответ

На самом деле это довольно просто сделать, по крайней мере, с .NET 4.0 (я не тестировал с 3.5). Я просто позволяю IIS 7 позаботиться об этом. Нет необходимости создавать настраиваемый фильтр сжатия.

Сначала убедитесь, что вы установили функцию динамического сжатия для IIS 7. Затем выберите сервер в диспетчере IIS и с помощью модуля сжатия включите динамическое сжатие. Или вы можете сделать это из командной строки:

C:\windows\system32\inetsrv\appcmd set config -section:urlCompression /doDynamicCompression:true 

Затем отредактируйте следующий файл. Возможно, вам придется сделать его копию, а не редактировать конфигурацию напрямую (Notepad ++ жалуется на меня), а затем перезаписать оригинал, когда будете готовы.

C:\Windows\System32\Inetsrv\Config\applicationHost.config

Там вы найдете раздел в разделе вам нужно будет добавить все типы mime, которые вы хотите сжать, когда клиент отправляет заголовок Accept-Encoding: gzip. Например:

<dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="application/xml" enabled="true" />
    <add mimeType="application/json" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="*/*" enabled="false" />
</dynamicTypes>

После того, как вы все это сделаете, переработайте свой пул приложений, и все будет в порядке. Если это не сработает, попробуйте перезапустить сервер и убедиться, что динамическое сжатие включено как на уровне приложения, так и на уровне сервера.

Примечание. Согласно некоторым сообщениям, которые я читал, раньше была ошибка, при которой вам приходилось указывать кодировку символов (например, «application / json; charset = utf-8»). Однако у меня не было никаких проблем.

6
ответ дан 7 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: