2017-01-31 3 views
0

Ich rufe einen WCF-Dienst an und ich versuche, ein Bild hochzuladen. Wenn es jedoch den WCF-Dienst erreicht, hat es diesen Fehler:Der Remote-Server hat einen Fehler zurückgegeben: (413) Request Entity Too Large. WCF

Der Remote-Server gab einen Fehler zurück: (413) Request Entity Too Large.

Die Ablaufverfolgung auf dem WCF-Dienst sagt:

System.ServiceModel.ProtocolException: Die Quote maximale Nachrichtengröße für eingehende Nachrichten (65536) überschritten wurde. Verwenden Sie die MaxReceivedMessageSize-Eigenschaft für das entsprechende Bindungselement, um das Kontingent zu erhöhen.

Also, wogend gelesen, einfach peasy dachte ich. Ändern Sie einfach diese Einstellung und wir gehen weg. Allerdings nicht so. Ich habe die Bindung über die Benutzeroberfläche "WCF-Einstellungen bearbeiten" in Visual Studio bearbeitet. Es hat die web.confg wie folgt geändert:

<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="debugMode" name="Portal.Service" /> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="debugMode"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_Portal" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00" > 
      <readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

Der Fehler tritt jedoch immer noch auf? Das Problem ist definitiv mit dem WCF-Dienst, wie ich die Ausnahme in den Service-Trace-Protokollen sehe. Der aufrufende Client (ASP.Net) bezeichnet ihn als "Remote-Server".

Ich habe diese Einstellungen auch auf dem Client web.config:

<bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_Portal" maxReceivedMessageSize="2147483647" 
       maxBufferSize="2147483647" 
       maxBufferPoolSize="2147483647" /> 
     </basicHttpBinding> 
    </bindings> 

In IIS ich die uploadReadAhead Größe zu setzen haben. Ich weiß nicht, was ich jetzt tun soll. Die Bindungen stimmen überein, die Einstellungen wurden über die GUI geändert. Was könnte es mehr wollen?

Antwort

2

Sie haben die Konfiguration für die Bindung geändert, aber ich sehe nirgends in der Konfigurationsdatei Ihres Dienstes, wo Sie die Bindung ("BasicHttpBinding_Portal") verwenden.

Sie können eines von zwei Dingen tun. Ordnen Sie diese Bindung entweder über das bindingConfiguration-Attribut des Tags <service> dieser Bindung einem expliziten Endpunkt zu, oder nehmen Sie die Konfiguration vor, die Sie als Standard für basicHttpBinding festlegen, indem Sie das name-Attribut auf dem <binding>-Tag weglassen. Da Sie definiert keine explizite Endpunkt haben, würde ich den zweiten Ansatz empfehlen:

<bindings> 
    <basicHttpBinding> 
    <binding maxReceivedMessageSize="2147483647" 
      maxBufferSize="2147483647" 
      maxBufferPoolSize="2147483647" /> 
    </basicHttpBinding> 
</bindings> 

Die hier entscheidende Punkt ist, dass Sie den Service sagen, muss die Bindung von Ihnen angegebenen zu verwenden. Wenn Sie dies nicht tun, werden die Standardwerte für die Bindung verwendet. Indem Sie das Attribut name in der Bindungskonfiguration weglassen, weisen Sie das Framework an, diese Konfiguration für alle basicHttpBinding Anfragen zu verwenden.

Verwandte Themen