我正在尝试调用WCF服务(托管在Windows服务中,而不是IIS中)并收到以下错误:
最大邮件大小配额 已超出传入的消息 对于远程通道。见 服务器日志以获取更多详细信息。
我尝试将MaxReceivedMessageSize和ReaderQuotas增加到最大值而没有任何运气。
我还打开了日志记录并检查了“发送”的消息大小。它绝对没有接近最大值。我们正在谈论发送一个序列化为372KB XML的对象。
两个问题:
有人知道邮件所指的“服务器日志”吗?我已经检查过EventViewer,但没有显示出来......
有谁知道这里可能适用的其他配置设置?
答案 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)
两件事:
您能告诉我们服务器和客户端配置(只是相关部分 - 端点,绑定配置)
您是否更改了双方(客户端和服务器)的值?
你可以影响很多大小的设置......