2010-03-16 5 views
5

Je reçois cette exception lorsque j'essaie d'accéder à un service Web wcf.WCF, Le serveur distant a renvoyé une erreur: (400) Demande incorrecte

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

serveur Reliure Informations

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

<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

et laquelle des fixations utilisez-vous en fait ?? Le BasicHttpBinding ou le wsHttpBinding ?? –

Répondre

2

Pouvez-vous nous en dire un peu plus sur votre configuration?

  • quelle liaison utilisez-vous?
  • est-ce la seule méthode de service? Si non: les autres travaillent-ils?
  • montrez-nous les configs sur le client et le serveur! (Tout à l'intérieur <system.serviceModel> est d'intérêt)

Il semblerait que si les temps de client d'attente pour le serveur - cela peut être parce que le serveur prend trop de temps pour répondre (si vous faites beaucoup de chargement de données); Dans ce cas, vous devez augmenter les délais d'attente sur le serveur et le client

Vous pouvez également envoyer un paquet de données trop volumineux - dans ce cas, vous devrez peut-être également augmenter les paramètres pour maxReceivedMessageSize et al .

@Pinu: voulez-vous télécharger 5 Mo? Vous avez transferMode = StreamRequest, ce qui signifie que votre requête du client au serveur sera diffusée.

Si vous transférez 5 Mo, c'est une bonne idée de diffuser - de quelle façon transférez-vous ces octets?

+0

Hey Marc, j'ai mis à jour les informations du fichier de configuration. Nous essayons d'envoyer 5MB (max). et j'ai déjà noté maxreceivedmessagesize = 100mb. SO je ne pense pas que cela devrait être le problème – Pinu

+0

Hey Marc, Il jette cette erreur quand j'active transfermode = "flux" il lance cette erreur. Avec transfermode = buffer il me permet d'envoyer jusqu'à 3mb de fichiers. J'utilise également le contrat de message et le flux de mémoire pour demander le flux de mémoire – Pinu

Questions connexes