この質問はすでに何千回も聞かれているようですが、構成の問題は人によって異なります。画像を提供し、画像のアップロード要求も受け取る WCF サーバーがあります。画像をアップロードするときに、サイズが 65k を超えるとエラー 400 が発生します。
WCF でトレースをオンにすると、正確なエラーが発生します
受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。クォータを増やすには、適切なバインド要素で MaxReceivedMessageSize プロパティを使用します。
このパラメーターを増やす必要があることはわかっていますが、web.config ファイルのどこにあるはずなのかを見つけることができます。これが私がweb.configに持っているものです:
<system.serviceModel>
<protocolMapping>
<add binding="webHttpBinding" scheme="http" />
</protocolMapping>
<services>
<service behaviorConfiguration="ReportTransferServiceBehavior" name="ReportTransferService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="ReportTransferService" contract="IReportTransferService"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="ReportTransferServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior>
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<domainServices>
<endpoints>
<add name="json" type="Microsoft.ServiceModel.DomainServices.Hosting.JsonEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
maxReceivedMessageSize="2000000" />
</endpoints>
</domainServices>
<bindings>
<basicHttpBinding>
<binding name="ReportTransferService" maxReceivedMessageSize="2000000" maxBufferSize="2000000" transferMode="Streamed">
<readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000" />
<security mode="None"></security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
画像(HTTP POST)を送信しているURLはhostname/ReportTransferService.svc/UploadImage
. ある種のデフォルトのバインディングを使用していbasicHttpBinding
て、より大きなサイズ用に構成されていないようです。
誰でも私の web.config の何が問題なのか教えてもらえますか?
更新: 解決済み
サービス構成とserviceBehavior構成でReportTransferServiceの完全修飾名を指定する必要があり、このバインディングを使用するために、同様の制限と指定されたサービスを備えたまったく新しいwebHttpBindingセクションを追加しました。
ご協力いただきありがとうございます。