私は webHttpBinding で WCF Web サービスを開発しています。クライアント アプリケーションは、この WCF Web サービスをオンデマンド (HTTP POST) またはスケジューラー Windows サービス (現在 Quartz.net を使用) 経由で呼び出します。
呼び出しごとに、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 がまだ実行されているかどうかわかりません。タスクに必要な時間が 30 分など少ない場合は、有効な結果が返されます。
すべてのスイッチ値でトレース ログを試し、traceviewer を使用して出力を監視しましたが、エラーは見つかりませんでした。
私の質問は、WCF サービスを webHttpBinding サービスとして設計する必要がありますか、それとも別のタイプとして設計する必要がありますか?