0

私はこの問題を数日間調査してきましたが、ほとんどのソリューションでは、app.config ファイルと web.config ファイルの両方で MaxReceivedMessageSize バインディング設定を変更することが言及されています。ただし、私のソリューションには app.config ファイルがないため、ここで何が間違っているのか正確にはわかりません。

私の Web クライアントは IIS 7 から展開されています。xml データを含む JavaScript フォームを文字列として WCF Web サービスに非同期的に送信し、そこからクライアントでファイルのダウンロードをトリガーしようとしています。これは小さなファイルでは機能しますが、バインドがデフォルトに落ちているように見えるため、大きなファイルでは失敗します。

svclog で WCF トレーサを使用すると、「受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。クォータを増やすには、適切なバインド要素で MaxReceivedMessageSize プロパティを使用してください。」と表示されます。私のサービスから来ています。

これが私のリクエストに適用されていないことがわかっている私のweb.configです。したがって、私のリクエストは私の JavaScript クライアントから離れることさえありません。

  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="customBindingNameForLargeMessages"
                  maxReceivedMessageSize="2147483647" transferMode="Streamed">
          <readerQuotas maxDepth="2147483647"
                        maxStringContentLength="2147483647"
                        maxArrayLength="2147483647"
                        maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
        </binding>
      </webHttpBinding>
    </bindings>
    <client>
      <endpoint address="http//localhost:32478/Services/MobileConsoleDownloadService.svc"
        binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages"
        contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService"
        name="" />
    </client>
    <services>
      <service name="Foo.Bar.MobileConsole.Services.MobileConsoleDownloadService">
        <endpoint address="http:localhost:32478/Services/MobileConsoleDownloadService.svc"
          binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages"
          name="" contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService" />
      </service>
    </services>
  </system.serviceModel>
4

2 に答える 2

0

私はこれを機能させました。間違ったアドレスを指定しました。ここで、相対アドレスの使用方法を理解する必要があります。

編集: この質問に対して新しい質問を作成するつもりでしたが、最初にここでヒットするかどうかを確認します。だから私が持っているとしましょう

http://localhost:8080/services/whatever.svc

特定できる方法はありますか

/services/whatever.svc

? これを別のサーバーにデプロイするとき。

于 2013-05-17T20:40:35.583 に答える
0

この答えはあなたの「2番目の」質問に対するものです

<services>
  <service name="Foo.Bar.MobileConsole.Services.MobileConsoleDownloadService">
    <endpoint address="services.whatever.svc"
      binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages"
      name="" contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService" />
      <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/"/>
      </baseAddresses>
    </host>
  </service>
</services>
于 2013-05-17T20:47:14.917 に答える