.NET 4 RC を使用して、IIS でホストされている WCF REST サービスを使用しています。サービスへの POST 呼び出しは、JSON を使用してシリアル化されます。DataMember (文字列) のいずれかのサイズが 8K を超えるまで、すべて正常に機能します。この場合、MaxStringContentLength を超えたことを示す以下のエラーが表示されます。endPoint の maxStringContentLength 属性が増加し、構成ファイルから正しく読み取られるようになりました。
ウェブ構成は次のとおりです。
<services>
<service name="MyServiceServer" >
<endpoint address="http://localhost/MyService" kind="webHttpEndpoint" endpointConfiguration="serviceEndPoint" contract="IMyService">
</endpoint>
</service>
</services>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="serviceEndPoint" maxReceivedMessageSize="2048000" maxBufferSize="2048000" maxBufferPoolSize="0">
<readerQuotas maxStringContentLength="2048000" maxArrayLength="2048000" maxDepth ="65000"/>
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
IMyService インターフェイスは次のように定義されています。
public interface IMyService
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/request", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
void MyMehod(<Class Type> obj);
}
完全なエラー メッセージは次のとおりです。
「サーバーでリクエストの処理中にエラーが発生しました。例外メッセージは、「タイプ のオブジェクトのデシリアライズ中にエラーが発生しました。XML データの読み取り中に、文字列コンテンツの最大長クォータ (8192) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxStringContentLength プロパティを変更することで増やすことができます。詳細については、サーバー ログを参照してください。例外スタック トレースは次のとおりです。 Dispatcher.SingleBodyParameterMessageFormatter.