mscorlib.dll 中出现“System.ServiceModel.CommunicationException”类型的未处理异常

Posted

技术标签:

【中文标题】mscorlib.dll 中出现“System.ServiceModel.CommunicationException”类型的未处理异常【英文标题】:An unhandled exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dll 【发布时间】:2014-03-09 01:45:07 【问题描述】:

我在调用非我开发的 web 服务中的方法时收到以下错误。

在 mscorlib.dll 中发生“System.ServiceModel.CommunicationException”类型的未处理异常

它不仅发生在我的本地开发机器上,而且在部署软件时也发生在客户端的服务器上。

我目前正在使用 Visual Studio 2010。

【问题讨论】:

当您与地球上其他地方的另一台机器交谈时,最基本的可能出错的是无法通信。使用 InnerException 找出原因。并确保启用WCF tracing 【参考方案1】:

在捕捉到 CommunicationException 并查看 InnerException 后,我发现了以下详细信息: 已超出传入消息的最大消息大小配额 (65536)。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。 这个问题的解决方案是将以下内容添加到我的配置文件中。

<bindings>
  <basicHttpBinding>
    <binding name="R2MSBulkUploadSoap" allowCookies="true"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"/>
    </binding>
  </basicHttpBinding>
</bindings>

我从here找到了这个解决方案

【讨论】:

【参考方案2】:

看MSDN里面有很详细的说明怎么办:

健壮的客户端和服务应用程序处理 CommunicationException 通信过程中可能抛出的对象。还有两个 CommunicationException 派生的异常类型 (FaultException 和 FaultException) 客户端也经常 预计。因此,为了防止泛型 CommunicationException 处理程序从捕获这些更具体 异常类型,在处理之前捕获这些异常 通信异常。

【讨论】:

【参考方案3】:

对于其他有此问题的人,它可能很有用,在服务器 WebConfig 中启用日志错误:

<system.diagnostics>  
    <trace autoflush="true" />  
    <sources>  
            <source name="System.ServiceModel"   
                    switchValue="Information, ActivityTracing"  
                    propagateActivity="true">  
            <listeners>  
               <add name="sdt"   
                   type="System.Diagnostics.XmlWriterTraceListener"   
                   initializeData= "SdrConfigExample.e2e" />  
            </listeners>  
         </source>  
    </sources>  
</system.diagnostics>  

在我的例子中是一个序列化错误:

How to return a List<object> in WCF

【讨论】:

以上是关于mscorlib.dll 中出现“System.ServiceModel.CommunicationException”类型的未处理异常的主要内容,如果未能解决你的问题,请参考以下文章

CAB安装程序无法复制System.dll,mscorlib.dll和mscorlib.tlb

“System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

在 mscorlib.dll 中发生 System.ExecutionEngineException'

持续发生的 mscorlib.dll 中发生 System.Threading.ThreadAbortException

如何从visual studio 2013中禁用mscorlib.dll?

索引超出了 MSCORLIB.DLL 中的数组范围