当我搜索1天数据时,我正在使用Wcf我收到了结果,但如果我搜索30天数据,则会出现错误。
已超出传入邮件的最大邮件大小限额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性。
Server stack trace:
at System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded()
at System.ServiceModel.Channels.HttpInput.GetMessageBuffer()
at System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream)
at System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(HttpRequestMessage httpRequestMessage, Exception& requestException)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at IToursGdsService.getBatchAvailability(getBatchAvailabilityRequest request)
at ToursGdsServiceClient.IToursGdsService.getBatchAvailability(getBatchAvailabilityRequest request)
Inner Exception:
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
我的Service.config文件包含以下代码。
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="conString" connectionString="Server=.;Database=test;User ID=test;Password=test123"/>
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
<customErrors mode="Off"></customErrors>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" >
<serviceActivations>
<add relativeAddress="TourGDSService.ToursGdsService.svc" service="TourGDSService.ToursGdsService"/>
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior name="metadataServiceExtension">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="BasicHttpBinding_ToursGdsService" >
<textMessageEncoding messageVersion="Soap12" />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"/>
</binding>
</customBinding>
</bindings>
<extensions>
<behaviorExtensions>
<add name="metadataService" type="Thinktecture.ServiceModel.Extensions.Metadata.StaticMetadataBehaviorElement, Thinktecture.ServiceModel.Extensions.Metadata, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<services>
<service behaviorConfiguration="metadataServiceExtension" name="TourGDSService.ToursGdsService">
<endpoint address="" binding="customBinding" bindingNamespace="http://giinfotech.com/app/05"
bindingConfiguration="BasicHttpBinding_ToursGdsService" contract="IToursGdsService" />
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:1)
问题可能与邮件的总大小无关,而与邮件元素的大小无关。
看看这个问题: WCF maxReceivedMessagesize and readerquotas
如果出现此问题,请添加以下配置:
<binding name="BasicHttpBinding_ToursGdsService" >
<textMessageEncoding messageVersion="Soap12" />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"/>
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
此外,您可以尝试在绑定而不是httpTransport上添加属性maxReceivedMessageSize,maxBufferPoolSize和maxBufferSize。
答案 1 :(得分:0)
如果您在代码中声明绑定,那么可以在那里增加缓冲区大小。
BasicHttpBinding q = new BasicHttpBinding(BasicHttpSecurityMode.None);
q.MaxBufferSize = 2147483646;
q.MaxBufferPoolSize = 2147483646;
q.MaxReceivedMessageSize = 2147483646;
q.ReaderQuotas.MaxArrayLength = 2147483646;
q.ReaderQuotas.MaxBytesPerRead = 2147483646;
q.ReaderQuotas.MaxDepth = 2147483646;
q.ReaderQuotas.MaxNameTableCharCount = 2147483646;
q.ReaderQuotas.MaxStringContentLength = 2147483646;
如果没有,你可以尝试做池大小脚本,但我不确定100%它去哪里 (我会在评论中提出但我还没有50名代表)