2011-01-13 2 views
1

Как сжать выходные данные из веб-службы (веб-метод). Результатом является тип XmlDocument.Сжатие ответов ASP.NET WebService

Вот код.

[WebMethod] 
public XmlDocument GetPersonalInfo(int CustomerID) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(new CustomersXML().GetPersonalInfo(CustomerID)); 
    return doc; 
} 

Как это сделать? Помните, что это не страница (HTTP-вызов), ее веб-служба, вызываемая из клиента Flex.

Благодаря

ответ

0

У меня нет времени, чтобы искать код, но есть пространство имен System.IO.Compression, который имеет несколько классов как для Gzip и схем сжатия дефляции на основе. Gzip, вероятно, является более безопасной ставкой для межязыкового общения, поскольку я не уверен, насколько широко распространено сжатие дефляции.

Однако у вас не должно быть никаких проблем в сообщении, если есть заголовок с SOAP-пакетом, сообщающий клиентскому серверу о распаковке потока.

Примечание: дважды проверьте настройки сервера, прежде чем это делать, поскольку некоторые хосты включили Gzip по умолчанию, и вы не хотите делать это дважды.

0

Это не связано с .NET.

GZIP - это функция HTTP на веб-сервере - при условии, что клиент поддерживает ее, которая обычно уведомляет сервер, отправляя GZIP в заголовках ACCEPT при отправке запроса.

Вам необходимо настроить его в IIS. В зависимости от версии это может быть иначе. В IIS 7 это очень просто, просто установить флаг. См. here.

+2

Gzip был только введен в качестве стандарта по умолчанию в IIS7 и доступен только как модуль в Apache, поэтому я бы не сказал его «ничего общего с .NET», поскольку это означает, что это не то, что вы не можете вызвать программным путем. Вы можете определенно вывести потоки Gzipped непосредственно из .NET. Независимо от того, является ли это его разумным вопросом совершенно отдельный. –

1

This answer ссылки ancient article пояснения, как реализовать это программно, используя SharpZipLib.

Another answer демонстрирует использование System.IO.Compressionclasses, которое может быть заменено на SharpZipLib.

Rick Strahl собрал an article, рассмотрев потенциальные проблемы, которые следует учитывать при реализации сжатия, которые, как представляется, не рассматриваются в приведенных выше примерах. Он также ссылается на an article, в котором содержится более подробная информация об использовании встроенного сжатия IIS7.

1

пойти в IIS или любой другой конфигурационный файл и добавьте следующую строку в соответствующем месте:

<add mimeType="application/json" enabled="true" /> 

Я имел такую ​​же проблему - мой IIS был в состоянии GZIP никакого ответа HTTP, за исключением json response (где, где необходимо, сжатие gzip больше всего в моем приложении).

надежда, что помогает

Update: хост конфигурационный файл приложения должен быть расположен здесь: % WINDIR% \ system32 \ Inetsrv \ Config

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