を受け入れることができるWCFサービスがありbyte[]
ます。を使用してクライアントを作成していますHttpClient
が、次のエラーが発生します。サーバーとクライアントの両方でを設定する必要があることをオンラインで読みましたがreaderQuotas
、これらの設定を?で設定するにはどうすればよいHttpClient
ですか?
エラー:
タイプRTM.API.Resources.UGCRequestのオブジェクトの逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、配列の最大長クォータ(16384)またはオブジェクトグラフクォータの最大アイテムを超えました。これらのクォータは、XmlDictionaryReaderQuotasのMaxArrayLengthプロパティまたはMaxItemsInObjectGraph設定を変更することで増やすことができます。
サーバー構成:
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"/>
<standardEndpoint name="DirectoryEndpoint"/>
</webHttpEndpoint>
</standardEndpoints>
<services>
<service name="API.Service.UGCService" behaviorConfiguration="DataServiceBehavior">
<endpoint contract="API.Service.UGCService" kind="webHttpEndpoint" endpointConfiguration="" binding="webHttpBinding" bindingConfiguration="BigHttpBinding"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DataServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483644"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="BigHttpBinding" transferMode="Buffered" maxReceivedMessageSize="2147483647" >
<readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binding>
</webHttpBinding>
</bindings>
クライアントコード:
using (HttpClient client = new HttpClient(apiPath))
{
using (HttpRequestMessage request = new HttpRequestMessage(method, finalUrl))
{
request.Headers.Accept.AddString("application/json");
request.Headers.Add("Authorization", sb.ToString());
if (method == "POST" || method == "PUT")
{
if (requestBody.Count() == 0)
request.Headers.ContentLength = 0;
else
{
request.Content = HttpContent.Create(APM6.Utils.Serialize(requestBody), "application/json");
}
}
using (HttpResponseMessage response = client.Send(request))
{
return response.Content.ReadAsString();
}
}
}