ajax请求中的错误动作控制器asp mvc

时间:2016-07-22 12:44:23

标签: javascript c# asp.net ajax timeout

当你点击它时我有按钮 它运行ajax,将id发送给控制器 现在控制器做了什么,它在服务器端没有错误, 但在控制器的动作中我有代码与restsharp 发送请求以休息Web服务其工作正常(), 但是这部分()在foreach中并运行5或......时间 当我这样做的时候ajax需要很长时间并运行ajax代码的错误部分 我该怎么办?

ajax代码:

             $(document).on("click", "#btn-submit", function () {
                    $.ajax({
                        type: 'POST',
                        url: '/Panel/CheckRefOrderCode',
                        data: JSON.stringify({
                            factorrefid: $("#ref-check").val()
                        }),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        success: function (result) {
                            if (result.DntSuccess) {
                            } else {
                            }
                        },
                        error: function () {
                        }
                    });
            });

动作代码

                        foreach(string s in str)
                    {
                        var client = new RestClient("http://**.com/api/v1/orders/status?support_code=71GD4A");
                        var request = new RestRequest(Method.POST);
                        request.AddHeader("token", "15befa43");
                        IRestResponse response = client.Execute(request);

                        RefOrderJsonViewModel.RefOrderJson reforderbackJson =
                            JsonConvert.DeserializeObject<RefOrderJsonViewModel.RefOrderJson>(response.Content);

                        if (reforderbackJson.status.ToLower() == "ok")
                        {
                            performed += reforderbackJson.data.performed;
                            order_status += reforderbackJson.data.order_status + "^";
                        }
                    }

我将此添加到web.config

    <httpRuntime executionTimeout="100000000" maxRequestLength="262144" />

2 个答案:

答案 0 :(得分:0)

为ajax调用添加超时:

 $(document).on("click", "#btn-submit", function () {
                $.ajax({
                    type: 'POST',
                    url: '/Panel/CheckRefOrderCode',
                    data: JSON.stringify({
                        factorrefid: $("#ref-check").val()
                    }),
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    **timeout: 10000 // sets timeout to 10 seconds**
                    success: function (result) {
                        if (result.DntSuccess) {
                        } else {
                        }
                    },
                    error: function () {
                    }
                });
        });

查看this post如何处理超时错误。

答案 1 :(得分:0)

问题仍然存在;

但我用这个

    Parallel.ForEach(myEnumerable, obj =>
{
   // ... 
});

代替常规

  

的foreach

并行地做foreach的身体, 时间在减少, 问题解决了