2010-03-16 28 views
5

Otrzymuję ten wyjątek podczas próby uzyskania dostępu do usługi internetowej wcf.WCF, Serwer zdalny zwrócił błąd: (400) Niepoprawny wniosek

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

Server Wiążąca Informacja

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

Klienta wiążąca informacja

<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

i które z wiązań w rzeczywistości używasz? BasicHttpBinding lub wsHttpBinding ?? –

Odpowiedz

2

Czy możesz powiedzieć nam coś o swojej konfiguracji?

  • jakiego wiązania używasz?
  • jest to jedyna metoda serwisowa? Jeśli nie: czy inni pracują?
  • pokaż nam konfiguracje na kliencie i serwerze! (Wszystko wewnątrz <system.serviceModel> jest przedmiotem zainteresowania)

Wydaje się jakby razy na klienta czeka na serwerze - może to być, ponieważ serwer trwa zbyt długo, aby odpowiedzieć (jeśli dużo ładowania danych zrobić); W takim przypadku należy zwiększyć limity czasu na serwerze i klienta. Możesz też przesłać zbyt duży pakiet danych przez przewód - w takim przypadku konieczne może być również zwiększenie ustawień dla maxReceivedMessageSize i innych .

@Pinu: próbujesz przesłać 5 MB? Masz transferMode = StreamRequest, co oznacza, że ​​Twoje żądanie od klienta do serwera będzie przesyłane strumieniowo.

Jeśli przenosisz 5 MB, warto przesyłać strumieniowo - w jaki sposób przesyłasz te bajty?

+0

Hej Marc, zaktualizowałem informacje o pliku konfiguracyjnym. Próbujemy wysłać 5MB (max). i mam już seet maxreceivedmessagesize = 100mb. Więc nie sądzę, że powinien to być problem. – Pinu

+0

Hej, Marc, To wyrzucenie tego błędu, kiedy włączam transfermode = "stream", rzuca ten błąd. Z transfermode = buffer pozwala mi wysyłać do 3mb plików. Używam również umowy wiadomości i strumienia pamięci do żądania strumienia pamięci – Pinu

Powiązane problemy