微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 从vb.net调用WCF时如何增加MaxReceivedMessageSize

当我搜索1天数据时,我正在使用Wcf我得到了结果,但如果我搜索30天数据,我会收到以下错误.

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.

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>

解决方法

也许问题与消息的总大小无关,而与消息元素的大小无关.

看看这个问题:
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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐