2012-04-15 8 views
1

Ich habe einen Dienst erstellt, um große Dateien zu empfangen. Danach habe ich es auf meinem lokalen IIS7 veröffentlicht. Danach habe ich Test-Client mit Service-Referenz erstellt. Wenn ich versuche, eine große Datei an den Server zu senden, habe ich: Ungültige Anfrage (400).WCF-Service 400 schlechte Anfrage

Ablaufverfolgung dieser Ausnahme: Das maximale Nachrichtengrößenkontingent für eingehende Nachrichten (65536) wurde überschritten. Verwenden Sie die MaxReceivedMessageSize-Eigenschaft für das entsprechende Bindungselement, um das Kontingent zu erhöhen.

Server config:

<system.web> 
<compilation debug="true" targetFramework="4.0" /> 
<httpRuntime maxRequestLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="14400"/> 
<customErrors mode="Off" /></system.web> 

Bindung

 <wsHttpBinding> 
    <binding name="wsBufferedHttpsBinding" messageEncoding="Mtom" 
      maxReceivedMessageSize="11534336" maxBufferPoolSize="524288" 
      sendTimeout="00:05:00" receiveTimeout="00:05:00" openTimeout="00:05:00" closeTimeout="00:05:00" > 
     <readerQuotas maxDepth="64" maxStringContentLength="11534336" maxArrayLength="11534336" 
      maxBytesPerRead="11534336" maxNameTableCharCount="16384" /> 
    </binding> 
    </wsHttpBinding> 

Dienst

 <service name="MyService"> 
    <endpoint address="" 
       binding="wsHttpBinding" 
       bindingName="wsBufferedHttpsBinding" 
       contract="IServiceContract"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    <endpoint address="soap12IssuedToken" binding="customBinding" 
     bindingConfiguration="soap12IssuedToken" name="soap12IssuedToken" 
     bindingNamespace="http://url" 
     contract="IServiceContract" /> 
    </service> 

Was zum Teufel falsch mit diesem Service? Ich stelle diese Nachrichtengröße überall ein.

+0

Wie groß sind die zu übertragenden Dateien? Es kann hilfreich sein, [streaming with the http binding] zu verwenden (http://msdn.microsoft.com/en-us/library/ms733742.aspx). –

+0

Vergessen zu sagen - es ist fehlgeschlagen, während 1 MB Datei senden. –

+0

Ich fand diesen sehr interessanten Kommentar über dieses Propblem: http://Stackoverflow.com/a/4808527/383187. Aber in meinem Tracking gibt es keine No-Endpoint-Nachrichten –

Antwort

2

Das Hauptproblem besteht darin, dass Ihr Endpunkt keine Bindungskonfiguration referenziert. Sie verwenden deshalb die Standard 65536

Es gibt ein paar andere Dinge zu überprüfen:

  • Sie haben 2-Endpunkte für den gleichen Vertrag verwenden Sie die eine, wo MaxReceivedMessageSize gesetzt?
  • Passt die Konfiguration auf dem Client zu der auf dem Server?
  • Sie müssen "MaxBufferPoolSize" und "MaxBufferSize"
  • ganz einfach
0

Antwort gesetzt ist, kann auch:

<endpoint address="" 
      binding="wsHttpBinding" 
      bindingName="wsBufferedHttpsBinding" 
      contract="IServiceContract"> 

habe ich nicht sehen binding statt bindingConfiguration

ist es
0

Ich war auch mit diesem Problem konfrontiert, später, aber dann löste ich es durch Hinzufügen der dataContractSerializer maxItemsInObjectGraph = "2147483646" im Verhalten des Dienstes

Verwandte Themen