1

ASP.NET WebMethod の JQuery AJAX 呼び出しがあります。

async: true関数が戻るまで WebPage がロックされないようにするを理解したので、 に設定しました'true'

私が直面している問題は、内部GetVersionFromDataBase()のメソッドGetVersion()が完了するまでに長い時間がかかり、その間にバックエンド全体がロックされる (シングルスレッド) ことです。

ユーザー エクスペリエンスは、Web サイトを閲覧している他のユーザーの場合、別のページであっても、「重い」メソッドが戻るまで画面がロックされます。

関数GetVersionFromDataBase()を別のスレッド/タスクにするにはどうすればよいですか?

$.ajax({
    type: "POST",
    url: "Default.aspx/GetVersion",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    success: function (result) {
        alert('the version is:' + result.d);
    }
});



public partial class Default : System.Web.UI.Page
{
    [WebMethod]
    public string GetVersion()
    {
        string version = GetVersionFromDatabase(); // this is a heavy method freezes the program till it finishes
        return version;
    }
}
4

2 に答える 2

0

これは開発 Web サーバーでのみ発生し、運用環境の IIS では発生しません。

ASP.NET 開発サーバーの同時処理が機能しない

于 2013-06-11T17:52:27.557 に答える