2009-07-16 59 views
7

我從我的WCF服務中收到以下錯誤,它正在返回C#對象中的查詢結果。WCF - 傳入郵件的最大郵件大小限額已被超過

的最大郵件大小配額傳入郵件(131072)已 已經超過

我知道如何通過MaxReceivedMessageSize解決這個我正在尋找,找出是我怎麼找了解什麼有助於消息大小。它並不像我這樣可以純粹是數據。 如果我將5Kb的數據添加到我從服務中撤回的數據量中。爲了解決這個錯誤,我需要將MaxReceivedMessageSize增加5KB以上。

我也想知道任何工具來看看在調試器的郵件大小。當我通過我的代碼到我的WCF服務被調用的地步,我似乎無法得到有關郵件大小的任何信息等。

最後,如何修剪/優化郵件大小!

+0

設置MaxReceivedMessageSize所需的配置在這裏:http://stackoverflow.com/questions/1573606/wcf-maxreceivedmessagesize-question – 2010-10-12 09:19:27

回答

0

你可以使用數據協定序列化序列化的消息,一個MemoryStream,然後檢查,看看有多少個字節達。

+0

任何好的示例?無論如何,恕我直言尊敬地建議,當解決方案設置MaxReceivedMessageSize配額時,聽起來像** WOMBAT **。也許調試的目的。 – Kiquenet 2015-04-14 06:16:04

10

你可以打開日誌?如果包括這些片段到您的服務配置:

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" > 
     <listeners> 
     <add name="xmlTrace" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="c:\Traces\ServiceTrace.svclog" /> 
     </listeners> 
    </source> 
    </sources> 
    <trace autoflush="true" /> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false" 
     logMalformedMessages="true" logEntireMessage="true" 
     maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" /> 
    </diagnostics> 
</system.serviceModel> 

這將創建在您選擇的目錄中的文件ServiceTrace.svclog。使用WCF服務跟蹤查看器(可在c:\program files\Microsoft SDKs\Windows\v6.0A\bin\目錄中找到)來分析文件 - 它會顯示消息的確切內容,並且還包含消息的「內容長度」,因此您會看到確切的大小消息是。

+6

我在哪裏可以找到「內容長度」信息,我打開Microsoft服務跟蹤查看器並且沒有看到它... – manu08 2009-11-09 23:45:59

相關問題