【问题标题】:An unhandled exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dllmscorlib.dll 中出现“System.ServiceModel.CommunicationException”类型的未处理异常
【发布时间】:2014-03-09 01:45:07
【问题描述】:
我在调用非我开发的 web 服务中的方法时收到以下错误。
在 mscorlib.dll 中发生“System.ServiceModel.CommunicationException”类型的未处理异常
它不仅发生在我的本地开发机器上,而且在部署软件时也发生在客户端的服务器上。
我目前正在使用 Visual Studio 2010。
【问题讨论】:
-
当您与地球上其他地方的另一台机器交谈时,最基本的可能出错的是无法通信。使用 InnerException 找出原因。并确保启用WCF tracing
标签:
visual-studio-2010
c#-4.0
mscorlib
【解决方案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