2013-08-02 96 views
0

我使用Visual Studio 2012從Silverlight 5應用程序嘗試將GZip壓縮添加到WCF 請求。我還使用Fiddler2和WCF Binary插件來檢查郵件的標題和正文(例如Content-Type)。Silverlight中的WCF請求壓縮

我可以成功地添加compressionFormat =「壓縮」屬性導致二元/ GZip壓縮的請求消息發送一個WinForms app.config文件...

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <system.serviceModel> 
     <bindings> 
      <customBinding> 
       <binding name="CustomBinding_IService1"> 
        <binaryMessageEncoding compressionFormat="GZip" /> 
        <httpTransport /> 
       </binding> 
      </customBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://localhost/WcfService2/Service1.svc" 
       binding="customBinding" bindingConfiguration="CustomBinding_IService1" 
       contract="ServiceReference1.IService1" name="CustomBinding_IService1" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

但我不能添加同樣的compressionFormat =「GZip」屬性到Silverlight 5應用程序(仍VS2012)。

任何人都可以確認或否認這一點?任何解決方法?

我懷疑這是因爲VS2012中的SL5仍然使用WCF 4.0。再次,任何人都可以證實或否認?有誰知道WCF4.5支持是否會被添加到Silverlight?

TIA

克雷格

回答

0

compressionFormat="GZip"對我工作的罰款。大多數情況下,WCF/SL的問題來自服務器和客戶端之間的配置不匹配。 (我不得不花時間在customBinding/binaryEncoding配置的服務器和basicHttpBinding的配置客戶端)

compressionFormat="GZip"必須在web.config在服務器端設置。 然後你必須在Silverlight5方面創建ServiceReference,就這些了。在ServiceReferences.ClientConfig文件中沒有可見的壓縮參考。所有服務器端都完成了,正如我已經理解的那樣(我可以犯錯),它是在將消息傳遞給SL插件之前處理本地gzip解壓縮的瀏覽器。

PS:使用Fiddler檢查導線,看看工作中的壓縮情況(這真的很棒)。