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