我在asp页面上有webmethod
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string MyMethod(string requestObject)
{
// here is operation that takes approximately 200 - 300 second
}
页面上还有一个AJAX方法
jQuery.ajax({
url: 'MyPage.aspx/MyMethod',
type: 'POST',
contentType: "application/json",
dataType: 'json',
data: somedata,
timeout: 300000,
success: function (response) {
some handler
}
});
当我尝试调用这个ajax方法时,我得到'System.Web.HttpException:Request timed out。'
我尝试将executionTimeout =“300”添加到web.config中的元素。 问题得到解决。但据我了解,这将增加所有应用程序的超时。 我不想这样做。 有没有更合适的方法来修复超时异常? 并且executeTimeout参数是为所有请求设置超时还是仅为异步请求设置超时?
答案 0 :(得分:2)
您是否尝试过Server.ScriptTimeout
?
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string MyMethod(string requestObject)
{
HttpContext.Current.Server.ScriptTimeout = 300;
// here is operation that takes approximately 200 - 300 second
}
并且对所有请求执行executionTimeout参数设置超时 仅用于异步请求?
这适用于没有设置自己超时的所有请求。 从服务器的角度来看,同步或异步请求之间没有http差异。