【问题标题】:ASP.NET page webmethod AJAX call Request timed outASP.NET 页面 webmethod AJAX 调用请求超时
【发布时间】:2013-06-07 02:25:52
【问题描述】:

我在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:请求超时。”

我尝试将 executionTimeout="300" 添加到 web.config 中的元素。 并且问题解决了。但据我了解,这会增加所有应用程序的超时时间。 我不想这样做。 有没有更合适的方法来修复超时异常? 并且 executionTimeout 参数是为所有请求设置超时还是只为异步请求设置超时?

【问题讨论】:

标签: asp.net ajax webmethod


【解决方案1】:

你试过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 的区别。

【讨论】:

  • 嗨!抱歉,我不能在我的网络方法中使用“服务器”。方法是静态的,所以这个属性不可用。
  • @TarasLviv 抱歉没有注意到静态。我编辑了我的答案。
  • 非常感谢!这正是我所需要的。
猜你喜欢
  • 2012-01-30
  • 1970-01-01
  • 2014-01-17
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多