ASP.NET页面webmethod AJAX调用请求超时

标签 asp.net ajax webmethod

我在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 参数是为所有请求设置超时还是仅为异步请求设置超时?

最佳答案

您尝试过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
}

And does executionTimeout parameter set timeout for all requests or just for async requests?

这适用于所有没有设置自己的超时的请求。 从服务器的角度来看,同步请求和异步请求之间没有 http 区别。

关于ASP.NET页面webmethod AJAX调用请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040695/

相关文章:

C#函数返回数组

c# - 下拉列表按钮 kilter ie 和 mozilla

c# - WebMethod 异步结果显示对象

c# - "Request format is invalid"

javascript - 使用 ajax 调用在 GridView 中显示评论

c# - 子 web.config 是否有忽略父 web.config 的命令或设置

c# - 如何从 DataTable 的最后一行中检索值?

javascript - Vimeo iframe 作为背景

ruby-on-rails - Rails Devise 密码重置电子邮件允许多次提交

javascript - 调用ajax函数显示错误tUncaught TypeError : $ is not a function using jquery