WCF - 已超出传入邮件的最大邮件大小配额

时间:2009-07-16 09:31:34

标签: .net wcf web-services

我从我的WCF服务收到以下错误,该服务返回C#对象中的查询结果。

  

传入邮件的最大邮件大小限额(131072)   已超出

我知道如何通过MaxReceivedMessageSize来解决这个问题我想知道的是如何找出有助于邮件大小的内容。我不认为它可以是纯粹的数据,例如   如果我将5Kb数据添加到我从服务中撤回的数据量。我需要将MaxReceivedMessageSize增加5KB以上才能解决错误。

我也想知道在调试器中查看消息大小的任何工具。当我逐步调试我的代码到我的WCF服务被调用时,我似乎无法获得有关消息大小等的任何信息

最后如何修剪/优化邮件大小!

2 个答案:

答案 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,然后检查以查看相应的字节数。