7

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

已超出远程通道的传入消息的最大消息大小配额。有关更多详细信息,请参阅服务器日志。

我尝试将 MaxReceivedMessageSize 和 ReaderQuotas 增加到它们的最大值,但没有任何运气。

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

两个问题:

  1. 有谁知道该消息指的是什么“服务器日志”?我检查了EventViewer,但那里什么也没显示...

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

4

4 回答 4

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 节点上:

于 2009-11-10T15:40:23.537 回答
1

我认为服务器日志是指打开它时创建的跟踪和日志文件。这是MSDN 链接

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

于 2009-11-10T15:36:28.367 回答
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>
于 2009-11-10T15:45:36.087 回答
0

两件事情:

  • 你能告诉我们服务器端和客户端的配置吗(只是相关的部分——端点、绑定配置)

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

您可以影响大量的尺寸设置......

于 2009-11-10T15:45:40.517 回答