2011-01-13 121 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