1

この質問はすでに何千回も聞かれているようですが、構成の問題は人によって異なります。画像を提供し、画像のアップロード要求も受け取る 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セクションを追加しました。

ご協力いただきありがとうございます。

4

1 に答える 1

1

以下に示すように、サービス セクションには完全修飾名が必要です。

     <services>
      <service behaviorConfiguration="ReportTransferServiceBehavior" name="namespace.ReportTransferService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="ReportTransferService" contract="namespace.IReportTransferService"></endpoint>
      </service>
    </services>
于 2012-06-15T16:24:01.090 に答える