WCF最大消息大小配额

7

我正在尝试调用一个托管在Windows服务中(而不是IIS)的WCF服务,但出现以下错误:

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

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

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

两个问题:

  1. 有人知道消息所指的“服务器日志”是什么吗? 我已经检查了EventViewer,但那里没有任何显示...

  2. 有人知道还有哪些配置设置可能适用于此处吗?

4个回答

5
您的问题让我想起了Shawn Wildermuth的一篇博客文章,他在Silverlight应用程序中遇到了大消息大小的问题。也许这会对您有所帮助:http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF
Shawn说:
“诀窍是在web.config中更改customBinding以使用更大的默认值。 我选择了2MB,因为它是一个合理的大小。 当然,像上面显示的设置为2GB将起作用,但它确实使您更容易受到攻击。 选择一个不大于您最大请求但不过度大的大小。 这是一个猜测游戏。 要设置这些内容,您需要将它们添加到httpTransport节点中。”

谢谢!这篇文章真的很有帮助。 - reustmd

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>

1
我已经将这个配置项添加到我的服务应用程序中并获取了日志文件。然而,它仅显示发送消息的过程,但没有展示实际错误或任何其他信息。 - reustmd

1

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

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


0

两件事情:

  • 你能给我们展示服务器和客户端的配置吗(只需相关部分 - 端点,绑定配置)

  • 你在双方(客户端和服务器)都更改了值吗??

有很多大小设置可以影响....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接