消息大小很大时WCF中的Faultexception

时间:2014-09-24 14:34:48

标签: c# asp.net wcf faultexception

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

"通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。"

我已跟踪它并且我的发件人应用程序发送消息,我的.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);
    }
}

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

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

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

或者来自代码:

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

同样在客户端也是如此。