2

ExtJS 3.4 を使用しています。長時間実行される非同期プロセスがあり、完了するまで待つ必要があります。Firefox では問題なく動作しますが、Internet Explorer では待機しません。この問題を解決するにはどうすればよいですか?

クライアント側のコードは次のとおりです。

function SaveUser(form, myDataObject, url) {
    if (form.isValid()) {

        StatusMessage.show('Please wait. New User Registrations may take up to one minute to complete.');

            Ext.Ajax.request(
            {
                url: url,
                method: 'POST',
                timeout: 30000,
                params: myDataObject,
                success: function (result, request) {
                    StatusMessage.hide();
                    formSubmit = Ext.util.JSON.decode(result.responseText);

                    if (!formSubmit.success) {
                        Ext.Msg.show({
                            title: 'Error',
                            msg: formSubmit.msg,
                            buttons: Ext.Msg.OK,
                            icon: Ext.MessageBox.WARNING,
                            minWidth: 390,
                            maxWidth: 390,
                            closable: false
                        });                 
                    } else {
                        ShowRegistered();
                    }
                },
                failure: function (result, request) {
                    StatusMessage.hide();
                    ShowServerError(result);
                }

            });
        } else {
            ShowValidationErrors();
        }
    }

サーバー側のコードは次のとおりです。

CreateUserInActiveDirectory(user);

//Internet Explorer Time Out immediately instead of waiting here
System.Threading.Thread.Sleep(20000);

AuthenticateUser(user);
4

1 に答える 1

1

これは extjs の問題ではなく、IE の問題です。実際、extjs のデフォルトのタイムアウトは 30000 です。

ほとんどの場合、これはグローバル IE のグローバル タイムアウト設定が原因です。HKCU\Software\Microsoft\Windows\CurrentVersion\Internet SettingsReceiveTimeoutキーを確認します 。存在する場合は削除し、存在しない場合はミリ秒単位の値で作成します。

この問題が新しく、これまでに発生したことがない場合は、最近インストールした最新のソフトウェア製品を確認してください。この値を設定している製品がいくつかあります。

于 2012-12-11T12:07:28.947 に答える