1. ホーム
  2. wcf

[解決済み] WCFサービス、タイムアウトを増加させる方法は?

2023-01-08 09:33:08

質問

愚かな質問のように思えるかもしれませんが、WCF のすべては asmx よりもはるかに複雑なようで、svc サービスのタイムアウトを増やすにはどうしたらよいでしょうか。

以下は、私がこれまでに持っているものです。

<bindings>
      <basicHttpBinding>
        <binding name="IncreasedTimeout" 
          openTimeout="12:00:00" 
          receiveTimeout="12:00:00" closeTimeout="12:00:00"
          sendTimeout="12:00:00">
        </binding>
      </basicHttpBinding>
</bindings>

そして、私のエンドポイントはこのようにマッピングされます。

<endpoint address="" 
  binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout"
             contract="ServiceLibrary.IDownloads">
             <identity>
                <dns value="localhost" />
             </identity>
          </endpoint>

私が得ている正確なエラー。

リクエストチャネルは、00:00:59.9990000の後に返信を待っている間にタイムアウトしました。Requestの呼び出しに渡されるタイムアウト値を大きくするか、バインディングのSendTimeout値を大きくしてください。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。

WCF テストクライアントには、私のサービスのランタイム設定を含む config アイコンがあります。

ご覧のように、私が設定したのと同じ値ではありません。私は何を間違えているのでしょうか?

<bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IDownloads" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="">
                            <extendedProtectionPolicy policyEnforcement="Never" />
                        </transport>
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>

どのように解決するのですか?

タイムアウトの設定はクライアントレベルで行う必要があるため、私が web.config で設定していた設定は効果がありませんでした。WCF テストツールは独自の設定を持っており、そこでタイムアウトを設定する必要があります。