3

私は 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 サービスとして設計する必要がありますか、それとも別のタイプとして設計する必要がありますか?

4

1 に答える 1

1

最初の呼び出しの一部としてステータス ページを提供し、ユーザーにステータス ページを (繰り返し) チェックして、タスクが完了したかどうかを確認してもらうことを検討しましたか?

これにより、接続が短命になるため、何もタイムアウトしないことが保証されます。

于 2016-03-23T23:37:21.053 に答える