您的位置:首页 > 大数据

WCF大数据传输造成400错误的解决方案

2012-03-06 14:10 363 查看
 
1、WCF服务端的web.config文件中增加以下配置:

<system.serviceModel>

    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IDataService"  maxBufferPoolSize="2147483647"  maxReceivedMessageSize="2147483647"  maxBufferSize="2147483647">
          <readerQuotas  maxArrayLength="2147483647"  maxBytesPerRead="2147483647"  maxDepth="2147483647"  maxNameTableCharCount="2147483647"  maxStringContentLength="2147483647" />
        </binding>
      </basicHttpBinding>
    </bindings>

   

  <behaviors>

   <serviceBehaviors>

        <behavior name="NetStars.NsWord.WcfService.CrawServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>

        <behavior name="NetStars.NsWord.WcfService.DataAnalysisServiceBehavior">

          <serviceMetadata httpGetEnabled="true"/>

          <serviceDebug includeExceptionDetailInFaults="false"/>

        </behavior>

       

        <behavior name="NetStars.NsWord.WcfService.SegmentServiceBehavior">

          <serviceMetadata httpGetEnabled="true"/>

          <serviceDebug includeExceptionDetailInFaults="false"/>

        </behavior>

        <behavior name="NetStars.NsWord.WcfService.SortServiceBehavior">

          <serviceMetadata httpGetEnabled="true"/>

          <serviceDebug includeExceptionDetailInFaults="false"/>

        </behavior>

       

   </serviceBehaviors>

  </behaviors>

    <services>

      <service behaviorConfiguration="NetStars.NsWord.WcfService.CrawServiceBehavior" name="NetStars.NsWord.WcfService.CrawService">
        <endpoint address="" binding="basicHttpBinding" contract="NetStars.NsWord.WcfService.ICrawService" bindingConfiguration="BasicHttpBinding_IDataService">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>

     

      <service behaviorConfiguration="NetStars.NsWord.WcfService.DataAnalysisServiceBehavior" name="NetStars.NsWord.WcfService.DataAnalysisService">

        <endpoint address="" binding="basicHttpBinding" contract="NetStars.NsWord.WcfService.IDataAnalysisService" bindingConfiguration="BasicHttpBinding_IDataService">

        </endpoint>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

      </service>

      <service behaviorConfiguration="NetStars.NsWord.WcfService.SegmentServiceBehavior" name="NetStars.NsWord.WcfService.SegmentService">

        <endpoint address="" binding="basicHttpBinding" contract="NetStars.NsWord.WcfService.ISegmentService" bindingConfiguration="BasicHttpBinding_IDataService">

        </endpoint>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

      </service>

      <service behaviorConfiguration="NetStars.NsWord.WcfService.SortServiceBehavior" name="NetStars.NsWord.WcfService.SortService">

        <endpoint address="" binding="basicHttpBinding" contract="NetStars.NsWord.WcfService.ISortService" bindingConfiguration="BasicHttpBinding_IDataService">

        </endpoint>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

      </service>

    </services>

  <!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />-->

 </system.serviceModel>

以上是针对多个服务的情况,如果只有一个服务,则在<serviceBehaviors>中,只定义一个<behavior>,并且在<services>中只定义一个<service>即可。

2、客户端的web.config或app.config中的配置

<binding name="BasicHttpBinding_IDataAnalysisService"
closeTimeout="00:10:00"
          openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"

          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

          maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"

          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

          useDefaultWebProxy="true">

          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

          <security mode="None">

            <transport clientCredentialType="None" proxyCredentialType="None"

              realm="" />

            <message clientCredentialType="UserName" algorithmSuite="Default" />

          </security>

        </binding>

即可解决WCF传输大数据的时候,返回400错误的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息