2011-01-13 8 views
0

WebServiceHostFactory(REST)を使用して実装されたWCFサービスがあります。JSONオブジェクトに長い文字列がある場合のWCF(Rest)サービスエラー

文字列プロパティを持つJSONオブジェクトを送信するPOSTとしてサービスエンドポイントを呼び出しています。

これまでのところ、文字列の長さが長すぎる場合(正確にはどれくらいの長さ(8000文字が動作しますが、9000は動作しません)...私は試していませんでしたが、 。8192)

ことが、私は小さな文字列に対して正常に動作しますが、刺さは「長すぎる」の場合、コールバックとエラーが次のコードでのStatusCodeをチェックしようとすると:

System.Net.WebException: The remote server returned an error: NotFound. 

コールバックコード:

var request = (HttpWebRequest)result.AsyncState; 
var response = (HttpWebResponse)request.EndGetResponse(result); 

サービスが存在し、文字列が長すぎる場合にのみこれを取得するため、問題の場所を把握しようとしています。

jsonオブジェクトのサイズですか?それは私のサービス定義ですか?これはWCFの何かですか?

ありがとうございました

答えて

1

リーダークォータのMaxStringContentLengthプロパティで問題があると思います。デフォルト値は、設定を結合の値を変更することができます確かに8192ある:

<system.serviceModel> 
    <bindings> 
    <webHttpBinding> 
     <binding name="LargeString"> 
     <readerQuotas maxStringContentLength="16000" /> 
     </binding> 
    </webHttpBinding> 
    </bindings> 
</system.serviceModel> 

リファレンスエンドポイントの構成で、このバインディングの構成:WCF 4.0の場合

<endpoint address="..." contract="..." binding="webHttpBinding" bindingConfiguration="LargeString" /> 

あなたが結合に名を省略することができますすべてのWebHttpエンドポイントのデフォルト設定として使用する必要があります。

0

私はそれを知らずに理由を考えることができます。最大メッセージ長を超えた可能性がありますか?これはApp.Configファイルで設定できます。

大量のデータを転送する場合は、ストリーミングを使用するか、カーソルがSQLで動作するように独自のAPIを構築することができます。

関連する問題