ASP.NET WebMethod에 대한 JQuery AJAX 호출이 있습니다.JQuery AJAX가 다중 스레드 된 WebMethod를 호출합니다.
저는 async: true
을 이해합니다.이 기능을 사용하면 함수가 반환 될 때까지 웹 페이지가 잠기지 않으므로 'true'
으로 설정할 수 있습니다.
내가 직면하고있는 문제는 GetVersion()
내부의 GetVersionFromDataBase()
내부 메서드는 완료 될 때까지 오랜 시간이 걸리고, 전체 백엔드는 잠긴다 (단일 스레드).
사용자 경험은 다른 페이지에서도 웹 사이트를 탐색하는 다른 사용자의 경우 '무거운'방법이 반환 될 때까지 화면이 잠겨 있다는 것입니다.
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;
}
}
당신은이 "전체 백엔드 (단일 스레드) 잠겨"당신이 IIS에서 프로덕션 환경에서 발생하는 뜻 말할 때? 또는 개발 웹 서버에서 이러한 현상이 발생하고 있습니까? 각 요청은 IIS에 의해 비동기 적으로 처리되어야합니다. – Rob
Rob, 내 개발 웹 서버에서 일어나고 있습니다. 메서드가 호출되는 동안 새 탭이 열리고 전체 웹 사이트가 멈 춥니 다. 프로덕션 IIS에서 다르게 작동한다고 생각하십니까? – user829174
제 경험상, 개발 서버에서만 발생합니다. 이 게시물을 참조하십시오 : http://stackoverflow.com/questions/9036150/asp-net-development-server-concurrent-processing-doesnt-work – Rob