webHttpBindingでWCF Webサービスを開発しています。クライアントアプリケーションはこのWCF Webサービスをオンデマンド(HTTP POST)またはスケジューラーウィンドウサービス(現在Quartz.netを使用)を呼び出しています。長時間実行WCF 504 GATEWAY_TIMEOUTエラー
各コールでは、10〜30分かかるタスクのリストが実行されます。 1分後に504 Gateway_Timeoutエラーが発生します。私はWCF Webサービスの制限を増やしてみましたが、まだエラーが発生しています。
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" maxReceivedMessageSize="50000000" maxBufferSize="50000000" maxBufferPoolSize="50000000" crossDomainScriptAccessEnabled="true"/>
</webHttpBinding>
<httpRuntime executionTimeout="1800" targetFramework="4.0"/>
エラーに関係なく、タスクは常に完了します。 Web要求がタイムアウトしたときにWCFがまだ動作しているかどうかわかりません。タスクがより少ない時間、例えば半分の時間を必要とする場合、有効な結果を返す。
すべてのswitchvalueでトレースログを試してみましたが、traceviewerを使用して出力を監視しましたが、エラーは見つかりませんでした。
私の質問は、WebHttpBindingサービスとして設計する必要がありますか、別のタイプとして設計する必要がありますか?
クライアントからの一方向呼び出しとして設定してから、クライアントに定期的にステータスを取得させるようにしてください。 – Tim
@Tim、クライアントアプリではい、私はChromeのPostmanでWCFをテストするときにTask.Run()を使用してFire&amp; API呼び出しを実装しますが、エラーが発生します。 WCFのプロセスが、504が返された後もまだ実行されていることを確認するためのものです。 –