3

我有一个 WCF 服务和一个简单的 aspx 页面,它从一个控制台应用程序获取消息并将其发送到另一个控制台应用程序。当消息(xml 格式)长度在 6000000 左右时,它工作正常,但是当消息大小加倍时,它停止抛出以下异常

“通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为它处于故障状态。”

我已经跟踪它并且我的发件人应用程序发送了消息,我的 .aspx 页面得到了它,将它发送到我的接收者应用程序时抛出异常。这是代码。

public void SendMessage(string message)
{
    try
    {
         using (Receiver rec = new Receiver())
         {
              rec.SetMessage(message);
         }
    }
    catch (Exception e)
    { 
         Response.Write(e.Message);
         Response.Write(e.StackTrace);
    }
}

我尝试了一堆配置设置,但都没有解决问题。可能是什么原因?

提前致谢。

4

1 回答 1

4

这很简单。当消息大小超过允许的大小(即 6000000)时,它会抛出一个 FaultException。由于 FaultException 是从 Exception 扩展而来的,因此可以在您的代码中正确捕获它。我认为这没有任何问题,而不是如果您的数据很大,也可以增加大小限制。

更新:对于最大接收错误,您需要执行以下操作:传入消息的最大消息大小配额 (65536) ....要增加配额,请使用MaxReceivedMessageSize属性

或者从代码中:

WebHttpBinding binding = new WebHttpBinding();
binding.MaxReceivedMessageSize = 2147483647;

同样在客户端也是如此。

于 2014-09-24T14:53:20.400 回答