私はウェブを見回しましたが、この問題の解決策はどれも私にはうまくいかないようです。Silverlightアプリケーションによって消費されているWCFサービスがあります。大きなオブジェクトグラフを更新しようとするまで、すべてが正常に機能します。私のトレースログは素敵なエラーで私を迎えます:
受信メッセージの最大メッセージサイズクォータ(65536)を超えました。クォータを増やすには、適切なバインディング要素でMaxReceivedMessageSizeプロパティを使用します。
web.configファイルとSilverlightのClientConfigファイルの両方で設定を変更し、プロキシを手動で作成してコードで値を設定しようとしました。
私のweb.config:
<system.serviceModel>
<diagnostics>
<messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" />
<endToEndTracing propagateActivity="true" activityTracing="true"
messageFlowTracing="true" />
</diagnostics>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBindingSettings" closeTimeout="00:10:00" openTimeout="00:10:00" sendTimeout="00:10:00"
maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" messageEncoding="Text">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="TestConfigService">
<endpoint address="" contract="PreferencesUI.Hub.PreferenceSVC.ITestConfig" binding="basicHttpBinding"
bindingConfiguration="basicHttpBindingSettings" />
</service>
</services>
</system.serviceModel>
私のSilverlight:
EndpointAddress ea = new EndpointAddress("http://localhost:37935/TestConfig.svc");
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
binding.CloseTimeout = new TimeSpan(00, 5, 00);
binding.OpenTimeout = new TimeSpan(00, 5, 00);
binding.ReceiveTimeout = new TimeSpan(00, 5, 00);
binding.SendTimeout = new TimeSpan(00, 5, 00);
binding.TextEncoding = System.Text.Encoding.UTF8;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
_preferenceTSTServiceProxy = new TSTC.TestConfigClient(binding, ea);
私がここで見逃したものを見た人はいますか?私がWebで見つけたものはすべて、誰かがmaxReceivedMessageSizeを設定するのを忘れたか、エンドポイントにbindingConfiguration名の値を与えるのを忘れたということを指摘しています(どちらも私が行いました)。