Warum ist mein WCF-Dienst nicht geladen wird, wird meine Bindung config?
Habe ich das problem mit der folgenden Fehlermeldung: "Die maximale Größe einer Nachricht Quote für eingehende Nachrichten (65536) wurde überschritten. Die Fangquote zu erhöhen, verwenden Sie die MaxReceivedMessageSize-Eigenschaft auf die entsprechende binding-element."
Also Tat ich etwas Forschung und fand, dass ich brauchte, um erhöhen Sie den Puffer-und Nachrichtengröße, hier ist mein WCF-Dienst die config-Datei:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="default" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"/>
</wsHttpBinding>
</bindings>
<services>
<service name="WCF.Service.Service">
<endpoint address="ws" name="ws" bindingConfiguration="default" binding="wsHttpBinding" contract="WCF.Service.Contracts.IService" />
<endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="True" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Wenn ich den service in der WCF Test Client und Blick auf die erzeugte client-config-Datei es nicht meine Bindung:
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="ws" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:37444/Service.svc/ws" binding="wsHttpBinding"
bindingConfiguration="ws" contract="IService" name="ws">
<identity>
<userPrincipalName value="username@domain" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Bin ich verloren wie die, warum meine Bindung Konfiguration ist NICHT immer angewendet!? Die WCF Test-Client ist immer regenerieren die config als gut. Ich habe auch versucht die Aktualisierung der service-Referenz in einer Konsum-front-end-Anwendung, aber es tut nicht die aktualisierte verbindliche Konfiguration. Irgendwelche Vorschläge würde sehr geschätzt werden. Danke!
- Es sieht für mich wie Ihr Kunde ist immer Ihre Bindung...
- Es muss aber nicht meiner größeren maxBufferPoolSize und maxReceivedMessageSize Werte...
Du musst angemeldet sein, um einen Kommentar abzugeben.
WCF nicht importieren Sie alle Einstellungen Ihres Servers. Es gibt keinen Schalter zu aktivieren, der auf, entweder. Zwar mag es Sinn machen, in vielen Fällen, wäre es nicht immer eine gute Idee sein, nur duplizieren, werden alle Einstellungen von der server-Seite an den client.
So, in Ihrem Fall, was Sie tun müssen, ist hinzuzufügen, dass die Bindung Konfiguration Ihrer client-side proxy, zu, und verweisen Sie von Ihrem client-endpoint.
Wenn Sie die Kontrolle über beide enden des Drahtes, können Sie leicht Ihre Arbeit ein bisschen: externalisieren die binding-Konfiguration in eine separate Datei und verweisen Sie darauf.
So erstellen Sie eine Datei
bindings.config
enthält:und dann können Sie kopieren die Datei in das server-und das client-Projekt, und verweisen Sie in Ihrem service-und client-config:
und auf Ihrem client-Seite:
Diese Weise können Sie Ihre Konfiguration für die Bindungen einmal ausgeführt, und in beiden stellen.
Den maxBufferPoolSize und maxReceivedMessageSize nicht ausgesetzt sind, der client, der nur dem server bekannt sind. die Größen, die der client verwendet, sind die Standardwerte, ändern Sie einfach Sie zu sein, was Größe, die Sie wollen. offensichtlich ist dies problematisch, wenn Sie regenerierende es eine Menge, aber ich glaube nicht, dass es viel alternative.