2017-10-31 35 views
1

IE11は応答に時間がかかりすぎると自動的にAJAX要求を中止しますか? Angular4を使用して、私はかなり簡単な呼び出しを作成しています:IE11 Ajaxが5分後に中止される

this.http.post(url, requestJson, options) 
    .map((response: Response) => <string>response.json()) 

しかし、これは応答する前にかなり長い時間サーバー上で実行されます。私が経験していることは、IEが5分後にリクエストを中止することです。 Chromeでは、リクエストが中止されることはありません。

要求が異常終了すると、エラーが発生します。XMLHttpRequest:ネットワークエラー0x2ef3、エラー00002ef3のために操作を完了できませんでした。これは、MS's documentationによれば、ERROR_INTERNET_INCORRECT_HANDLE_STATEを意味します。

Wiresharkを見ると、私はIEがTCPリセットを同時に送信しているのを見ています。

サイトとサーバーをローカルで実行しているときに、要求が中断されません。

このタイムアウトを変更して中断しないようにする方法はありますか?注:より長期的な解決策として、このリクエストの動作を変更して、応答を受信する前にリクエストが数分間停止することがないようにします(長時間実行されるリクエストが行われたときの通知システムを設定します)。問題を解決していない私が試した

物事、私は0

  • にXMLHttpRequestオブジェクトのタイムアウトを設定している

    • 私は大きな値に観察可能なのタイムアウトを設定しました。
  • +0

    *ローカルで*おそらくサーバーの問題... –

    +0

    間違いなく、Chromeで動作し、IEが5分後にTCPリセットを送信していると思いますIEの動作と関係がある可能性があることを示唆しています。 – FreakyFred

    答えて

    1

    待機時間が長い場合は、WebsocketまたはLong Pollingに移行することを検討してください。これは、クライアント/サーバーの通信を通信の長い遅延により適したものに移行する適切なアプリケーションのようです。私はなぜIE11がこのように振る舞うかはわかりませんが、長い待ち時間があるように思えます。また、サーバが一度に負荷を受けると応答時間がさらに遅れる可能性があります。これはあなたのための選択肢ですか?

    +0

    これは、私たちが将来的に探しているものです。例えば、現在Responseが生成されているときに警告システムをセットアップするためのSignalRのようなものです(そのような場合、すぐにリクエストを完了することができます)。しかし、それは少し遅れている。 5分以上のAJAX要求を持つことは、確かに理想的な状況ではありません。 – FreakyFred

    関連する問題