2010-03-16 23 views
5

Ich erhalte diese Ausnahme, wenn ich versuche, auf einen Web-Service zuzugreifen.WCF, Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung

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

Server Binding Informationen

<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> 

Client-Informationen Bindung

<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> 
+0

und welche der Bindungen verwendest du eigentlich ?? Die BasicHttpBinding oder die wsHttpBinding ?? –

Antwort

2

Können Sie uns etwas über Ihr Setup sagen?

  • Welche Bindung verwenden Sie?
  • ist dies die einzige Service-Methode? Wenn nicht: Arbeiten die anderen?
  • zeigen Sie uns die Konfigurationen auf Client und Server! (Alles in <system.serviceModel> ist von Interesse)

Es scheint, als ob die Client-Zeiten für den Server warten out - das sein kann, weil der Server zu lange dauert, zu reagieren (wenn Sie eine große Datenmenge Laden tun); In diesem Fall müssen Sie Ihre Timeouts auf dem Server und dem Client erhöhen

Oder Sie senden möglicherweise ein zu großes Datenpaket über die Leitung - in diesem Fall müssen Sie möglicherweise auch die Einstellungen für maxReceivedMessageSize und andere erhöhen .

@Pinu: versuchen Sie, 5 MB hochzuladen? Sie haben transferMode = StreamRequest, was bedeutet, dass Ihre Anfrage vom Client an den Server gestreamt wird.

Wenn Sie 5 MB übertragen, ist es eine gute Idee zu streamen - auf welche Weise übertragen Sie diese Bytes?

+0

Hey Marc, ich habe die Konfigurationsdatei Informationen aktualisiert. Wir versuchen 5 MB (max) zu senden. und ich habe bereits maxreceivedmessagesize = 100mb seet. SO, ich denke nicht, dass das das Problem sein sollte – Pinu

+0

Hey Marc, es wirft diesen Fehler, wenn ich transfermode = "Stream" aktivieren, wirft es diesen Fehler. Mit transferme = Puffer kann ich bis zu 3mb Dateien senden. Ich verwende auch Nachrichtenvertrag und Speicherstream, um den Speicherstream anzufordern – Pinu

Verwandte Themen