2017-03-02 5 views
0

Bitte löschen Sie das nicht als Duplikat Ich habe einen Windows-Dienst, an den ich ein Array von Objekten übergebe. Wenn das Array weniger als 150 Objekte enthält, funktioniert es erfolgreich. Wenn ich mehr als 150 Objekte übergebe, erhalte ich den (413) Request Entity Too Large Error.
Ich habe versucht, die Rückmeldung von anderen Artikeln in Bezug auf ReaderQuotas Knoten Werte und maxReceivedMessageSize, aber ich bekomme immer noch den Fehler und ich bin fest, was ich immer noch falsch mache. Hier ist die app.config der Windows-Dienst:Windows-Dienst (413) Request Entity zu groß

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="basicHttpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"> 
      <readerQuotas maxDepth="2000000000" 
        maxStringContentLength="2000000000" 
        maxArrayLength="2000000000" 
        maxBytesPerRead="2000000000" 
        maxNameTableCharCount="2000000000" /> 
      </binding> 
     </basicHttpBinding> 
     <wsHttpBinding> 
      <binding name="wsHttpBindingNoSecurity" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> 
       <security mode="None"> 
        <transport clientCredentialType="None"/> 
        <message establishSecurityContext="false" negotiateServiceCredential="false"/> 
       </security> 
       <readerQuotas maxDepth="2000000000" 
        maxStringContentLength="2000000000" 
        maxArrayLength="2000000000" 
        maxBytesPerRead="2000000000" 
        maxNameTableCharCount="2000000000" /> 
      </binding> 
     </wsHttpBinding> 
     <mexHttpBinding> 
      <binding name="mexHttpBinding"/> 
     </mexHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="Service1Behavior"> 
       <serviceMetadata httpGetEnabled="true"/> 
       <serviceDebug includeExceptionDetailInFaults="true"/> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="SE.Responder.Integration.AmiOutboundService.AmiObService" behaviorConfiguration="Service1Behavior"> 
      <endpoint address="wsHttp" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingNoSecurity" contract="SE.Responder.Integration.AmiOutboundService.IAmiObService"> 
       <identity> 
        <dns value="localhost"/> 
       </identity> 
      </endpoint> 
      <endpoint address="basicHttp" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" name="basicHttp" contract="SE.Responder.Integration.AmiOutboundService.IAmiObService"/> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
      <host> 
       <baseAddresses> 
        <add baseAddress="http://localhost:8732/SE.Responder.Integration.AmiOutboundService/AmiObService/"/> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 
</system.serviceModel> 

Und hier ist die app.config der ausführbaren Datei, die die Daten auf den Windows-Dienst übergibt:

<system.serviceModel> 
<bindings> 
    <wsHttpBinding> 
    <binding name="WSHttpBinding_IAmiObService" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" > 
     <readerQuotas maxDepth="2000000000" 
        maxStringContentLength="2000000000" 
        maxArrayLength="2000000000" 
        maxBytesPerRead="2000000000" 
        maxNameTableCharCount="2000000000" /> 
    </binding> 
    </wsHttpBinding> 
</bindings> 
<client> 
    <endpoint address="http://localhost:8732/SE.Responder.Integration.AmiOutboundService/AmiObService/AmiOBService" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAmiObService" contract="AmiObService.IAmiObService" name="WSHttpBinding_IAmiObService" /> 
</client> 

+0

Wir stimmen ab, um als ein Duplikat zu schließen, wenn es ein Duplikat ist; wir werden nicht, wenn es nicht ist. Fragt uns, das nicht zu ändern. – Amy

+0

Ok, ich benutzte eine schlechte Wortwahl. Ich wollte feststellen, dass ich die Dinge, die ich in anderen ähnlichen Themen gefunden habe, bisher ohne Erfolg ausprobiert habe. –

+0

Wenn ich als langjähriger SO-Benutzer einen Rat geben kann: wenn ich eine Frage zu SO stelle und ich Lösungen aus anderen Fragen ausprobiert habe, von denen ich vermute, dass sie als Duplikat verwendet werden, zitiere ich diese Fragen in meiner Frage zusammen mit eine kurze Erklärung, was es gesagt hat und wie es mein Problem nicht löst. Zugegeben, das könnte dazu beitragen, dass es * früher * geschlossen wird, aber nach meiner Erfahrung wird es, wenn meine Frage nicht wirklich ein Duplikat ist, nicht geschlossen, und dies hilft uns, schneller zu einer Lösung zu kommen. – Amy

Antwort

0

Nach Beim Überprüfen des Quellcodes für die Anwendung, bei der dieses Problem aufgetreten ist, habe ich festgestellt, dass der WCF-Dienst im C# -Code gehostet wurde. Ich habe dann das Fix in Code angewendet, wie in dem folgenden Stapelüberlauf-Problem beschrieben, MaxReceivedMessageSize in WCF Hosted Service in console application, speziell die folgenden Zeilen, var wsHttpBinding = new WSHttpBinding(); wsHttpBinding.MaxReceivedMessageSize = int.MaxValue; Service.AddServiceEndpoint (typeof (TInterfaceContract), wsHttpBinding, EndpointAddress);

, die das Problem behoben.

Verwandte Themen