2013-01-17 134 views
1

我不得不在XML文件中存儲一些非常大的字符串。現在我想使用GZipStream來壓縮字符串,然後在客戶端稍後解壓縮它們。 WCF服務方法可以返回zip流作爲返回類型嗎?WCF服務可以返回Zip流嗎?

還有就是我的服務方法:

public Stream ZipResponse() 
{ 
    byte[] byteArray = null; 
    GZipStream compressionStream = null; 
    try 
    { 
     var var_details = "XML String Here"; 
     byteArray = Encoding.UTF8.GetBytes(var_details); 
     MemoryStream stream = new MemoryStream(byteArray); 
     compressionStream = new GZipStream(stream, CompressionMode.Compress, true); 
    } 
    catch (Exception e) 
    { } 
    return compressionStream; 
} 

現在,當我打電話從客戶端ZipResponse()方法,它拋出:
型「System.ServiceModel.CommunicationException」未處理的異常出現在mscorlib.dll附加信息:收到對XXX.XXX.XXX.XXX的HTTP響應時發生錯誤。這可能是由於服務端點綁定不使用HTTP協議。這也可能是由於HTTP請求上下文被服務器中止(可能是由於服務關閉)。查看服務器日誌獲取更多詳細信

+0

你的問題實在是模糊的。也許嘗試充實一下,展示你嘗試過的東西以及你卡在哪裏。 你的問題的基本答案是肯定的。 如果您需要更多細節,我們需要您在問題中提供更多細節。 – HaemEternal

+1

對不起我的問題海姆。我有WCF服務的12MB的xml字符串,我必須在zip流返回到clinet? – Sam

+1

你可以通過WCF使用二進制流發送任何東西 – LoSTxMiND

回答

2

是的,WCF服務方法可以將Stream返回給客戶端。 您應確保您的傳輸模式設置爲「流式傳輸」;除此之外,它應該是直截了當的。

你可以在這裏得到一些信息進一步:WCF Streaming Tutorial

+0

任何有關完整源代碼示例的最終解決方案?對於2種情況:a)將Stream返回給客戶端(來自服務)。 b)發送Stream到服務(來自客戶端) – Kiquenet

+0

@Kiquenet你嘗試看看我鏈接的教程嗎? – HaemEternal