WCF最大邮件大小配额

时间:2009-11-10 15:28:44

标签: c# wcf wcf-binding channel

我正在尝试调用WCF服务(托管在Windows服务中,而不是IIS中)并收到以下错误:

  

最大邮件大小配额   已超出传入的消息   对于远程通道。见   服务器日志以获取更多详细信息。

我尝试将MaxReceivedMessageSize和ReaderQuotas增加到最大值而没有任何运气。

我还打开了日志记录并检查了“发送”的消息大小。它绝对没有接近最大值。我们正在谈论发送一个序列化为372KB XML的对象。

两个问题:

  1. 有人知道邮件所指的“服务器日志”吗?我已经检查过EventViewer,但没有显示出来......

  2. 有谁知道这里可能适用的其他配置设置?

4 个答案:

答案 0 :(得分:5)

您的问题让我想起了Shawn Wildermuth的博客文章,他在Silverlight应用程序中遇到了大消息大小的问题。也许这会帮助你:

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF

肖恩说:

  

诀窍是更改web.config中的customBinding以使用更大的默认值。我选了2MB,因为它的大小合理。当然,如上所示将它们设置为2GB也可以工作,但它确实让你更容易受到攻击。选择一个不大于您的最大请求但不是太大的大小。这是一个猜谜游戏。要设置这些,您需要将它们添加到您的web.config是将它们放在httpTransport节点上:

答案 1 :(得分:1)

我认为服务器日志是指在启用时创建的跟踪和日志记录文件。这是MSDN link

我在WCF中遇到的属性需要在我编写的应用程序中具有更高的值,这些属性是maxReceivedMessageSize,maxStringContentLength,maxArrayLength和maxBufferSize。 尝试增加它们,看看会发生什么。 WCF可能很难调试,因为它喜欢吞下异常。

答案 2 :(得分:1)

您可以在应用程序配置中指定服务器日志和路径,如下所示

 <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"

                    switchValue="Critical, Error, Warning"
              >
        <listeners>
          <add name="traceListener"
                        type="System.Diagnostics.XmlWriterTraceListener"
                        initializeData="F:\log-data\ServiceTrace.svclog"
            />
        </listeners>
      </source>
    </sources>

  </system.diagnostics>

答案 3 :(得分:0)

两件事:

  • 您能告诉我们服务器和客户端配置(只是相关部分 - 端点,绑定配置)

  • 您是否更改了双方(客户端和服务器)的值?

你可以影响很多大小的设置......

相关问题