我从我的WCF服务收到以下错误,该服务返回C#对象中的查询结果。
传入邮件的最大邮件大小限额(131072) 已超出
我知道如何通过MaxReceivedMessageSize来解决这个问题我想知道的是如何找出有助于邮件大小的内容。我不认为它可以是纯粹的数据,例如 如果我将5Kb数据添加到我从服务中撤回的数据量。我需要将MaxReceivedMessageSize增加5KB以上才能解决错误。
我也想知道在调试器中查看消息大小的任何工具。当我逐步调试我的代码到我的WCF服务被调用时,我似乎无法获得有关消息大小等的任何信息
最后如何修剪/优化邮件大小!
答案 0 :(得分:11)
你可以打开日志记录吗?如果您将这些代码段包含在服务配置中:
<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\
目录中)来分析文件 - 它将显示消息的确切内容,还包括消息的“内容长度”,因此您将使用看看消息究竟有多大。
答案 1 :(得分:0)
您可以使用Data Contract Serializer将消息序列化为MemoryStream,然后检查以查看相应的字节数。