【问题标题】:FaultedException on WCF when message size is large消息大小较大时 WCF 中的故障异常
【发布时间】:2014-09-24 14:34:47
【问题描述】:

我有一个 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);
    }
}

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

提前致谢。

【问题讨论】:

    标签: c# asp.net wcf faultexception


    【解决方案1】:

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

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

    或者来自代码:

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

    同样在客户端。

    【讨论】:

    • 谢谢。无论数据大小,我都需要发送数据,我应该增加配置文件中的值吗?如果有,是哪一个?
    • 是的,需要增加最大接收大小
    • 是的,它奏效了。谢谢。不幸的是,我没有足够的代表投票给你。我有的时候会。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2014-05-29
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多