2009-07-16 53 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

相关问题