2016-09-16 9 views
0

WCFサービスでwsDualHttpBindingエンドポイントを動作させることができません。 私はクライアントでこの問題に直面しています。Wcf wsDualHttpBinding最大メッセージ長が16384に達しました

MaxArrayLengthを16384からインクリメントして、xmlデータ全体を読み取ることができるという例外があります。

私は次のように構成しようとした:

<system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="MyBinding" maxReceivedMessageSize="2147483647" /> 
     </wsDualHttpBinding> 
    </bindings> 

    <client> 
     <endpoint name="WSDualHttpBinding_IDataService" binding="wsDualHttpBinding" bindingConfiguration="MyBinding" 
     address="http://localhost:8733/DataProvider/" contract="DataStorageService.IDataService" > 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
    </client> 

をしかし、上記の設定は無視されているようです。

var instanceContext = new InstanceContext(new CallbackHandler()); 
    _clientService = new DataServiceClient(instanceContext); 

と私は、コードのこれらの行は、app.configをで設定を上書きすることをどこかで読ん;:

私はこのような私のクライアントをインスタンス化それが問題でなければ、私はどのようにしてクォータを増やすことができますか?

助けてください。

答えて

1

あなたはエラーがわかります正確に何:)

このため

それはそれを行うのではなくコピーして貼り付けコードする視覚的方法を確認するために最善のかもしれません。

あなたのプロジェクトでは、サービス "app.config"を右クリックして "Edit WCF Configuration"を選択し、そこから "Bindings"をクリックすると、カスタムバインディングが表示されます。右クリックして新しいバインディングを作成しない場合は、それが完了するとここからあなたが先に行くと、押して「ファイル」と、「ReaderQuotasプロパティは、」私が使用する

MaxArrayLength = 2147483647 
MaxBytesPerRead = 4096 
MaxDepth = 32 
MaxNameTableCharCount = 2147483647 
MaxStringContentLength = 2147483647 

で変更することができます

今行く「保存」あなたのapp.configコードを表示それは更新されているはずです。

は、あなたのサービスを実行してから、右のあなたのサービス参照をクリックし、「更新サービスのリファレンス」今、あなたはあなたのクライアントのapp.configを見て、それはあなたのサービスのapp.config属性はように見えたものと一致しなければならないファイルならば

。これが当てはまらない場合は、クライアントapp.configと「Edit WCF Configuration」を再度右クリックし、バインディングに移動してサービスエンドポイントを選択し、サービスと同じ値に変更します。

設定値が高くなると、ddos攻撃などに脆弱になるため、必要なものを見つけてテスト後に変更してください。

・ホープ、このことができます:)

は、あなたのサービスが管理者として実行されていることを確認してくださいまた、

+0

これはサーバー側で解決する手順のようですね。私はクライアント側でエラーが発生している – sam

+0

あなたのサーバー側が正しく設定されていない場合は、クライアントにも送信されません..私はクライアントとサーバーの両方を説明した、彼らは同様のプロセスです –

2

あなただけmaxReceivedMessageSize以上に設定する必要があります。 ジョナサン・コフィーは​​あなたにもreaderQuotasを設定する必要が など、BytePerRead、TableCharCount、StringContentLenghtがあり、言ったように:あなたは、サーバーにあなたがあなたのクライアントを構成し、そしてあなたができるとまったく同じ方法を設定する必要がhttps://msdn.microsoft.com/en-us/library/ms731325(v=vs.110).aspx

注意明らかにあなたのmaxreceivedmessagesizeよりも大きいmaxbytearraylengh'tを設定しないでください。 サーバーに同じMaxReceivedMessageSizeなどがない場合は、期待どおりに機能しません。

GL。

関連する問題