Je ne sais pas ... je ne sais pas exactement pourquoi cela se passe. J'ai parcouru au moins 50 pages dans Google et parcouru StackOverflow pour cette réponse. Lorsque j'exécute ce code, je reçois le message d'erreur:WCF - Win App "Le quota maximal de longueur de contenu de chaîne (8192) a été dépassé lors de la lecture de données XML."
"Une erreur s'est produite lors de la tentative de désérialisation du paramètre http://tempuri.org/:message Le message InnerException était" Une erreur s'est produite lors de la désérialisation de l'objet de type Application.Interfaces.Mail.MailMessage Le quota maximal de longueur de contenu de chaîne (8192) a été dépassé lors de la lecture de données XML.Ce quota peut être augmenté en changeant la propriété MaxStringContentLength de l'objet XmlDictionaryReaderQuotas utilisé lors de la création du lecteur XML. '"
Voici ce que j'ai sur le service WCF (serveur):
<system.serviceModel>
<services>
<service behaviorConfiguration="SimpleServiceBehavior" name="Application.Services.Mail.Mailer">
<host>
<baseAddresses>
<add baseAddress="http://myapp.com/"/>
</baseAddresses>
</host>
<endpoint bindingConfiguration="BasicHttpBinding_IMailer" bindingName="BasicHttpBinding_IMailer" binding="basicHttpBinding" address="http://myapp.com/" contract="Application.Services.Local.Mail.IEmailer">
<identity>
<dns value="myapp.com"/>
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SimpleServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMailer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="800000" maxBufferPoolSize="800000" maxReceivedMessageSize="800000" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="800000" maxStringContentLength="800000" maxArrayLength="800000" maxBytesPerRead="800000" maxNameTableCharCount="800000" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
Et ce que j'ai sur le côté client:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMailer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="5242880" maxBufferPoolSize="524288" maxReceivedMessageSize="5242880" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://myapp.com/Mail/Mailer.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMailer" contract="Interfaces.Mail.IEmailer" name="BasicHttpBinding_IMailer"/>
</client>
</system.serviceModel>
Avez-vous essayé de configurer la liaison dans le code (plutôt que dans le fichier app.config)? J'ai une configuration de travail pour NetTcpBinding, mais je vois que vous voulez utiliser BasicHttpBinding donc je préfère ne pas le coller ici. – Alan
Non, je ne l'ai pas essayé en utilisant du code. Quelle différence cela fait-il si je le lie en code vs config? –
Théoriquement, rien. Cependant, j'ai dû me battre pour faire fonctionner les choses avec net.tcp et il y avait un cas dans lequel j'ai dû recourir à une solution basée sur le code du côté client (voir http://geekswithblogs.net/RandyMichak/archive/ 2009/03/04/programattically-setting-the-maxitemsinobjectgraph-property-in-client.aspx) – Alan