配置MaxReceivedMessageSize解决:System.ServiceModel.QuotaExceededException: 已超过传入消息(65536)的最大消息大小配额。
System.ServiceModel.CommunicationException: 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。 —> System.ServiceModel.QuotaExceededException: 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
— 内部异常堆栈跟踪的结尾 —
Server stack trace: 在 System.ServiceModel.Channels.MessageEncoder.BufferMessageStream(Stream stream, BufferManager bufferManager, Int32 maxBufferSize) 在 System.ServiceModel.Channels.MessageEncoder.ReadMessage(Stream stream, BufferManager bufferManager, Int32 maxBufferSize, String contentType) 在 System.ServiceModel.Channels.HttpInput.ReadChunkedBufferedMessage(Stream inputStream)
在 System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException) 在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 在 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
…………
解决办法:设置客户端的MaxReceivedMessageSize等属性值即可,代码设置如下:
ServiceClient service = new ServiceClient();
(service.Endpoint.Binding as NetTcpBinding).MaxReceivedMessageSize = int.MaxValue;
(service.Endpoint.Binding as NetTcpBinding).MaxBufferPoolSize = int.MaxValue;
(service.Endpoint.Binding as NetTcpBinding).MaxBufferSize = int.MaxValue;
也可以在配置文件中(app.config/web.config)设置如下代码:
只要maxReceivedMessageSize大于返回的量即可。