Laden...

WCF FileUpload >65kb führt zu Bad Request

Erstellt von tequila slammer vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.186 Views
T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 12 Jahren
WCF FileUpload >65kb führt zu Bad Request

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.

G
538 Beiträge seit 2008
vor 12 Jahren

Es fehlt die Service-Deklaration ...


<services>
<service name="MyNamespace.MyService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpEndpointBinding" name="BasicHttpEndpoint" contract="MyNamespace.IContract" endpointConfiguration="" />
</service>
</services>

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 12 Jahren

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>

G
538 Beiträge seit 2008
vor 12 Jahren

Wo hostest du denn?
Self-Hosting oder in IIS?

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

849 Beiträge seit 2006
vor 12 Jahren

Hallo,

probier mal


 <system.web>
     <httpRuntime maxRequestLength="2147483647"
          useFullyQualifiedRedirectUrl="true"
          executionTimeout="45"/>
<system.web/>

Deiner Web.config hinzuzufügen..

6.911 Beiträge seit 2009
vor 12 Jahren

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ü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 12 Jahren

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.