一、影响因素
WCF传输数据的能力受到许多因素的制约,如果程序中出现需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置。
1. MaxReceivedMessageSize
可以接收的消息的最大大小。对于缓冲传输(TransferMode设置为Buffered),MaxBufferSize的值应始终等于MaxReceivedMessageSize的值。示例代码:
2. ReaderQuotas
处理的SOAP消息的复杂性约束。一般需要设置该属性的MaxArrayLength、MaxStringContentLength及MaxDepth属性。示例代码:
3. MaxItemsInObjectGraph
要序列化和反序列化的最大项数。该属性属于DataContractSerializer类。示例代码:
4. MaxRequestLength
请求的最大大小。WCF传输数据量的能力还受到HttpRuntime设置的制约。示例代码:
二、注意事项
1. 查看WCF错误信息
将如下代码加入到服务端的配置文件中,错误信息将输出到指定路径。
<system.diagnostics>
<sources>
<sourcename="System.ServiceModel"switchValue="Warning"propagateActivity="true">
<listeners>
<addname="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<addname="xml"type="System.Diagnostics.XmlWriterTraceListener"initializeData="d:\wcf.svclog" />
</sharedListeners>
</system.diagnostics>
2. 在服务端添加服务,通过Endpoint与客户端关联
3.更新服务将导致客户端Endpoint的behaviorConfiguration配置丢失
4.更新服务失败
提示错误如图:
解决此问题,需要至少在服务端的配置中存在如下代码: