WCF,远程服务器返回错误:(400) Bad Request [英] WCF , The remote server returned an error: (400) Bad Request

查看:41
本文介绍了WCF,远程服务器返回错误:(400) Bad Request的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在尝试访问 wcf 网络服务时遇到此异常.

I am getting this exception when trying to access a wcf web service.

[WebException: The remote server returned an error: (400) Bad Request.]
  System.Net.HttpWebRequest.GetResponse() +5314029
  System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +54

服务器绑定信息

<system.serviceModel>
   <bindings>
      <basicHttpBinding>
         <binding name="wcfSmartConnect" closeTimeout="10:01:00" 
                  maxBufferSize="104857600" maxBufferPoolSize="104857600" 
                  maxReceivedMessageSize="104857600" openTimeout="10:01:00"
                  receiveTimeout="10:10:00" sendTimeout="10:01:00"
                  messageEncoding="Mtom" transferMode="StreamedRequest">
            <readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
                          maxArrayLength="104857600" maxBytesPerRead="104857600" 
                          maxNameTableCharCount="104857600" />
         </binding>
      </basicHttpBinding>
   </bindings>
   <services>
      <service name="WcfSmartConnect.Service1"
               behaviorConfiguration="WcfSmartConnect.Service1Behavior">
         <endpoint 
               address="" 
               binding="basicHttpBinding" 
               bindingConfiguration="wcfSmartConnect"
               contract="WcfSmartConnect.IService1">
            <identity>
               <dns value="localhost" />
            </identity>
         </endpoint>
         <endpoint 
               address="mex" 
               binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
  </services>
  <behaviors>
      <serviceBehaviors>
           <behavior name="WcfSmartConnect.Service1Behavior">
            <serviceMetadata httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>

客户端绑定信息

<system.serviceModel>
   <bindings>
      <basicHttpBinding>
         <binding name="wcfSmartConnect" closeTimeout="10:01:00" 
                  maxBufferSize="104857600" maxBufferPoolSize="104857600" 
                  maxReceivedMessageSize="104857600" openTimeout="10:01:00" 
                  receiveTimeout="10:10:00" sendTimeout="10:01:00" 
                  messageEncoding="Mtom" transferMode="StreamedRequest">
             <readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
                           maxArrayLength="104857600" maxBytesPerRead="104857600" 
                           maxNameTableCharCount="104857600" />
         </binding>
      </basicHttpBinding>
      <wsHttpBinding>
          <binding name="WSHttpBinding_IService11" closeTimeout="01:00:00"
                   openTimeout="01:00:00" receiveTimeout="01:00:00" 
                   sendTimeout="01:00:00" bypassProxyOnLocal="false" 
                   transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                   maxBufferPoolSize="1048576000" maxReceivedMessageSize="1048576000"
                   messageEncoding="Text" textEncoding="utf-8" 
                   useDefaultWebProxy="true" allowCookies="false">
               <readerQuotas maxDepth="104857600" maxStringContentLength="104857600" 
                             maxArrayLength="104857600" maxBytesPerRead="1048576000" 
                             maxNameTableCharCount="104857600" />
               <reliableSession ordered="true" inactivityTimeout="00:10:00"
                                enabled="false" />
               <security mode="TransportWithMessageCredential">
                   <transport clientCredentialType="Windows" 
                              proxyCredentialType="None" realm="" />
                   <message clientCredentialType="Windows" 
                            negotiateServiceCredential="true" algorithmSuite="Default" 
                            establishSecurityContext="true" />
               </security>
            </binding>
        </wsHttpBinding>
   </bindings>
   <client>
       <endpoint name="WSHttpBinding_IService11"
           address="http://abc.com/API/serv.svc"
           binding="wsHttpBinding" 
           bindingConfiguration="WSHttpBinding_IService11"
           contract="SmartConnectRepublic.IService1" >
           <identity>
               <dns value="localhost" />
           </identity>
       </endpoint>
       <endpoint name="BasicHttpBinding_IService1" 
           address="http://localhost:4649/Service1.svc" 
           binding="basicHttpBinding"
           bindingConfiguration="wcfSmartConnect" 
           contract="SmartConnect.IService1" />
   </client>
</system.serviceModel>

推荐答案

你能告诉我们一些关于你的设置吗?

Can you tell us a bit about your setup?

  • 你使用什么绑定?
  • 这是唯一的服务方式吗?如果没有:其他的工作吗?
  • 向我们展示客户端和服务器上的配置!( 中的所有内容都很有趣)
  • what binding do you use?
  • is this the only service method? If not: do the others work?
  • show us the configs on client and server! (everything inside <system.serviceModel> is of interest)

看起来好像客户端等待服务器超时 - 这可能是因为服务器响应时间太长(如果您进行大量数据加载);在这种情况下,您需要增加服务器和客户端的超时时间

It would appear as if the client times out waiting for the server - this can be because the server takes too long to respond (if you do a lot of data loading); in that case, you need to increase your timeouts on the server and the client

或者您可能通过线路发送过大的数据包 - 在这种情况下,您可能还需要增加 maxReceivedMessageSize 等的设置.

Or you might be sending too large a data packet over the wire - in that case, you might also need to increase the settings for maxReceivedMessageSize et al.

@Pinu:你想上传 5 MB 吗?您有 transferMode=StreamRequest,这意味着您从客户端到服务器的请求将被流式传输.

@Pinu: are you trying to upload 5 MB? You have transferMode=StreamRequest, which means your request from the client to the server will be streamed.

如果您要传输 5 MB,最好进行流式传输 - 您以哪种方式传输这些字节??

If you're transferring 5 MB, it's a good idea to stream - which way do you transfer those bytes??

这篇关于WCF,远程服务器返回错误:(400) Bad Request的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆