2014-01-23 225 views
0

我已經找到了解決我的問題的一整天的問題(也在StackOverflow上),但不幸的是沒有任何工作。我仍然收到錯誤:傳入消息的最大消息大小配額(65536)已被超出。 Silverlight + WCF

「傳入郵件的最大郵件大小限額(65536)已被超出。要增加限額,請在適當的綁定元素上使用MaxReceivedMessageSize屬性。

有數以百計的解決方案,但基於.config文件在項目中。我有一個WCF服務和Silverlight客戶端。它們之間的綁定僅通過編程方式設置。

這裏有一個WCF服務配置塊代碼:

private ServiceHostBase CreateService(Uri baseAddress) 
    { 
     var serviceHost = new ServiceHost(typeof(MyService), new[] { baseAddress }); 
     var endPointWithoutSSL = new BasicHttpBinding() 
     { 
      MaxBufferSize = int.MaxValue, 
      MaxReceivedMessageSize = int.MaxValue, 
      MaxBufferPoolSize = int.MaxValue, 
     }; 

     serviceHost.AddServiceEndpoint(typeof(MyService), endPointWithoutSSL,          baseAddress.ToString()); 
     return serviceHost; 
    } 

在客戶終端的Silverlight項目的配置是這樣的:

private BasicHttpBinding GetBinding() 
    { 
     var securityMode = GetSecurityMode(); 
     var binding = new BasicHttpBinding(securityMode) 
     { 
      SendTimeout = TimeSpan.FromMinutes(10), 
      OpenTimeout = TimeSpan.FromMinutes(10), 
      CloseTimeout = TimeSpan.FromMinutes(10), 
      ReceiveTimeout = TimeSpan.FromMinutes(10), 
      TextEncoding = Encoding.UTF8, 
      TransferMode = TransferMode.Buffered, 
      MaxReceivedMessageSize = int.MaxValue, 
      MaxBufferSize = int.MaxValue, 
     }; 

     return binding; 
    } 

不管我怎麼努力,該MaxReceivedMessageSize設爲客戶端65k。 Microsoft WCF跟蹤工具顯示拋出異常後超過最大收到郵件大小。

更有意思的是,在端點中啓用BasicHttpSecurityMode.Transport不會導致此錯誤。 但是,我必須設置我的端點沒有BasicHttpSecurityMode.Transport選項。

任何幫助,將不勝感激。

感謝

+0

您確定在構建客戶端時使用此綁定嗎?你能展示你是如何創建你的代理? –

回答

1

試試下面的WCF端代碼,它應該工作。

private ServiceHostBase CreateService(Uri baseAddress) 
    { 
     var serviceHost = new ServiceHost(typeof(MyService), new[] { baseAddress }); 
     var endPointWithoutSSL = new BasicHttpBinding() 
     { 
      MaxBufferSize = int.MaxValue, 
      MaxReceivedMessageSize = int.MaxValue, 
      MaxBufferPoolSize = int.MaxValue, 
     }; 

     endPointWithoutSSL.ReaderQuotas.MaxStringContentLength = int.MaxValue; 
     endPointWithoutSSL.ReaderQuotas.MaxNameTableCharCount = int.MaxValue; 
     endPointWithoutSSL.ReaderQuotas.MaxDepth = int.MaxValue; 
     endPointWithoutSSL.ReaderQuotas.MaxBytesPerRead = int.MaxValue; 
     endPointWithoutSSL.ReaderQuotas.MaxArrayLength = int.MaxValue; 

     serviceHost.AddServiceEndpoint(typeof(MyService), endPointWithoutSSL, baseAddress.ToString()); 
     return serviceHost; 
    } 
+0

不幸的是,問題仍然出現在完全相同的消息中。 – Yeti

相關問題