2011-01-13 118 views
1

如何压缩来自Web服务(Web方法)的输出数据。输出是XmlDocument类型。ASP.NET WebService响应压缩

这是代码。

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

我该如何Gzip这个回应。请记住,它不是一个页面(HTTP调用),它是从Flex客户端调用的Web服务。

感谢

回答

0

我没有时间去寻找代码,但有是拥有若干类GZIP和基于通货紧缩压缩方案命名空间System.IO.Compression。 Gzip可能是跨语言交流的一个更安全的选择,因为我不确定通缩压缩是多么普遍。

但是,你不应该有在通信任何麻烦,只要有与SOAP包告诉客户端服务器来解压缩流的报头。

注:仔细检查,虽然在此之前您的服务器设置,因为有些主机有Gzip已默认打开的,你不想做两次。

0

这是无关的.NET。

GZIP是在Web服务器的HTTP特征 - 所提供的客户端支持它一般通过发送请求时在ACCEPT头发送GZIP通知服务器。

你需要把它架在IIS。根据版本,它可能会有所不同。在IIS 7中,它非常容易,只需设置一个标志即可。见here

+2

Gzip已仅在IIS7介绍了作为标准在默认情况下,它仅在Apache中作为模块提供,所以我不会说它“与.NET无关”,因为这意味着这不是您无法以编程方式调用的东西。您可以直接从.NET输出Gzipped流。它的谨慎是否是一个完全独立的问题。 – 2011-01-13 21:43:05

1

去你的IIS或任何配置文件,并添加以下行中的适当位置:

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

我有同样的问题 - 我的IIS能够GZIP任何HTTP响应,除了json响应(在需要我的应用程序中最需要gzip压缩的地方)。

希望帮助

更新: 应用主机配置文件应设在这里:%WINDIR%\ SYSTEM32 \ INETSRV \ CONFIG