Hallo Forum,
ich erstelle mir gerade einen UploadService via WCF. Für Dateien kleiner 65kb funktioniert alles hervorragend. Bei größeren Dateien, wirft er mir jedoch sofort die Meldung:
Fehlermeldung:
Der Remoteserver hat eine unerwartete Antwort zurückgegeben: (400) Bad Request.
Nun habe ich schon danach hier im Forum gesucht und auch einen Beitrag zu gefunden. WCF: Beschränkung bei größe eines http-requests?
Allerdings erscheint immer noch die Meldung.
Meine Client Config sieht wie folgt aus:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IUploadService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147283647" maxBufferPoolSize="2147283647" maxReceivedMessageSize="2147283647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147283647" maxStringContentLength="2147283647" maxArrayLength="2147283647"
maxBytesPerRead="2147283647" maxNameTableCharCount="2147283647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:50057/FileUploadService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUploadService"
contract="FileUpload.IUploadService" name="BasicHttpBinding_IUploadService" />
</client>
</system.serviceModel>
Die Service web.config sieht so aus:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="LargeFileUpload" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147283647" maxBufferPoolSize="5242889" maxReceivedMessageSize="2147283647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147283647" maxStringContentLength="2147283647" maxArrayLength="2147283647"
maxBytesPerRead="2147283647" maxNameTableCharCount="2147283647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- Legen Sie den Wert unten auf "false" fest, um die Veröffentlichung von Metadateninformationen zu vermeiden, und entfernen Sie den Metadatenendpunkt oben vor der Bereitstellung. -->
<serviceMetadata httpGetEnabled="true"/>
<!-- Damit in Fehlern Ausnahmedetails zum Debuggen angezeigt werden, legen Sie den Wert unten auf "true" fest. Legen Sie ihn vor der Bereitstellung auf "false" fest, um die Veröffentlichung von Ausnahmeinformationen zu vermeiden. -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Eine Vermutung ist, dass mein "LargeFileBinding" nicht greift. Allerdings wüßte ich auch nicht, wo ich es noch einbinden könnte.
Es fehlt die Service-Deklaration ...
<services>
<service name="MyNamespace.MyService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpEndpointBinding" name="BasicHttpEndpoint" contract="MyNamespace.IContract" endpointConfiguration="" />
</service>
</services>
Auch mit Service-Deklaration kommt die gleiche Meldung.
<services>
<service name="UploadService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="LargeFileUpload" name="BasicHttpEndpoint" contract="IUploadService" endpointConfiguration="" />
</service>
</services>
Wo hostest du denn?
Self-Hosting oder in IIS?
Hallo,
probier mal
<system.web>
<httpRuntime maxRequestLength="2147483647"
useFullyQualifiedRedirectUrl="true"
executionTimeout="45"/>
<system.web/>
Deiner Web.config hinzuzufügen..
Hallo,
aktive die Debug-Infos
<serviceDebug includeExceptionDetailInFaults="true" />
dann siehst du eine "sprechendere" Fehlermeldung.
Sonst wäre - v.a. wenn die Dateien noch größer werden - Streaming zu empfehlen. Siehe zB WCF Streaming: Upload files over HTTP
mfG Gü
Ich habe nun alle Antworten einmal getestet. Nichts was hilft. Trotz serviceDebug erhalte ich nach wie vor die gleiche Antwort.
Der Service wird im IIS 7 gehostet.