【发布时间】:2015-10-20 20:58:33
【问题描述】:
这是我得到的错误:
通讯对象, System.ServiceModel.Channels.ServiceChannel,不能用于 通信,因为它处于故障状态。
我有一个使用 WCF 的服务尝试将长度为 86,284 的字符串发送到另一个服务。两种服务都有这些设置(我使用的是 NetTcpBinding):
MaxReceivedMessageSize = 100000;
MaxBufferPoolSize = 100000;
MaxBufferSize = 100000;
MaxItemsInObjectGraph = 2147483646
我也有:
IncludeExceptionDetailInFaults = true
我正在尝试使用它来获取某种有用的错误消息,但由于某种原因,我得到了同样的东西。我可能只是不明白如何访问有用的错误消息。我也尝试过记录该服务,但它给出了同样的错误。
我已经深入了解它,以便我知道当我将此字符串发送到其他服务时服务出现故障。我已经确认它可以在 100% 的时间内发送另一个只有 6392 个字符长的字符串。这就是为什么我认为这些属性可能会解决这个问题。如果有人有任何想法或提示,将不胜感激。
哇,我终于收到一条错误消息:
已超出传入邮件的最大邮件大小配额 (65536)。要增加配额,请使用 MaxReceivedMessageSize 相应绑定元素上的属性。
不知何故我没有正确设置此属性。我创建了 NetTcpBinding,然后以这种方式设置属性。不知道为什么那行不通。
编辑:已解决
【问题讨论】:
-
你是在IIS中运行服务吗,我知道也可以设置消息大小限制。
-
不,它不是网络服务。我正在以编程方式设置大多数属性,否则我会在 App.config 中进行设置