WCF Web サービスへの呼び出しが失敗するSystem.Net.WebException: The request failed with HTTP status 413: Request Entity Too Large.
Fiddler を確認すると、以下を送信していることがわかります。
コンテンツの長さ: 149839
これは65KBを超えています。
サーバーで WCF トレースを有効にすると、次のように表示されます。
System.ServiceModel.ProtocolException: 受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。クォータを増やすには、適切なバインド要素で MaxReceivedMessageSize プロパティを使用します。
このプロパティを追加しても問題は解決しません。
私はそのプロパティだけを試してみましたが、(後で) 投稿が提案した他のさまざまなプロパティを試しました。これが私が現在(サーバー上に)持っているものです:
<basicHttpBinding>
<binding name="PricerServiceSoap"
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
私の唯一のエンドポイント(の下<client>
)は次のとおりです。
<endpoint address="/NetPricingService/Service.asmx"
binding="basicHttpBinding" bindingConfiguration="PricerServiceSoap"
contract="Pricing.PricerService.PricerServiceSoap"
name="PricerServiceSoap" />
私も追加しました:
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
下に<behavior>
。
私も実行しました(IIS 7の場合):
%windir%\system32\inetsrv\appcmd set config "WebServicesDev/PricingService"
-section:requestFiltering -requestLimits.maxAllowedContentLength:104857600
-commitpath:apphost
何も違いはありません。
問題の 1 つは、これが古い ASMX サービスを置き換えることを意図した WCF サービスであることです。サービスの骨格は、既存のWSDLからsvcutilで生成しました。クライアント構成を変更できません(クライアントは複数の言語で表示されます)。私のテスト クライアント プロジェクトは、Web 参照の追加 ( の下Add Service Reference / Advanced
) を使用してサービスをインポートしたため、WCF 構成はありません。ただし、古い ASMX サービスを指定すると、テスト クライアントは機能します。
これを修正または診断するにはどうすればよいですか?
追加情報
Microsoft Service Configuration Editor を使用して構成を生成すると (maxReceivedMessageSize と maxBufferSize を設定)、機能します。問題は、エンドポイントが で指定され<service>
、/NetPricingService/Service.asmx 相対アドレスを指定できないことです。svcutil によって生成された構成 (エンドポイントが下にある場所) でバインディングを編集する<client>
と、大きな要求では機能しません。