WCF-Dienst-Fehler 400 bad request
Habe ich gesucht, die dieses problem, und fand ich ähnliche Probleme, die von anderen Benutzern veröffentlicht, aber alles, was ich versucht habe nicht funktioniert, Das problem ist, dass ich mit einem WCF-service auf einem IIS gehostet, und einem client, die versuchen, uploaden einer serialisierten Bild auf eine Zeichenfolge, die Größe des Bildes ist ca 9mb, everythin andere funktioniert einwandfrei, ich kann Daten senden, ohne problem, außer das Bild.
Habe ich aktiviert tracelog und die Fehlermeldung sagt, dass die MaxReceivedMessageSize überschreiten
Hier ist meine config, die auf service:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Information, ActivityTracing, All">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<trace autoflush="true" />
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="ErrorSvcLog.svclog" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IServicioSalud" closeTimeout="10:01:00"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" openTimeout="10:01:00"
receiveTimeout="10:10:00" sendTimeout="10:01:00"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceBehavior" name="ServicioSalud">
<endpoint address="" binding="basicHttpBinding" contract="IServicioSalud" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="200000" />
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
</system.serviceModel>
</configuration>
Und die client-config
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IServicioSalud" closeTimeout="10:01:00"
openTimeout="10:01:00" receiveTimeout="10:10:00" sendTimeout="10:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true"
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://xxx.xxx.x.xxx:xxxx/wcfservicesalud/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IServicioSalud"
contract="IServicioSalud" name="BasicHttpBinding_IServicioSalud" />
</client>
</system.serviceModel>
Sie müssen die service-Endpunkt für den binding-Konfiguration, die Sie definiert (BasicHttpBinding_IServicioSalud) über die
bindingConfiguration
Attribut.InformationsquelleAutor MaxJRB | 2013-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deiner config-Datei, die Sie nicht bewertet haben die binding-Konfiguration, die Sie erstellt, so dass die Standard-Werte für
BasicHttpBinding
verwendet werden. Sie müssen explizit zugewiesen, die Bindung, die Sie definiert (BasicHttpBinding_IServicioSalud) zu Ihrem Endpunkt, wie diese:Tun Sie dies für Ihre service-config, wie der Dienst eingestellt werden muss, zu akzeptieren größere Daten.
Du bist herzlich willkommen. Froh, dass ich helfen konnte.
InformationsquelleAutor Tim
Dies ist meine version. Stellen Sie sicher, dass die bindingConfiguration angegeben, in der service, den Sie wollen. In meinem Fall muss ich den Namen angeben basicHttpBinding.
InformationsquelleAutor Michele Ferracin
Für mich, die Ursache war die Tatsache, dass in meiner Anfrage hatte ich nicht die Art des Inhalts.
InformationsquelleAutor Cosmin