【问题标题】:c# MVC ContentResult is not returning to the View after performing Lengthy operationc#MVC ContentResult在执行冗长操作后没有返回到视图
【发布时间】:2017-09-02 03:41:00
【问题描述】:

在我的 MVC 应用程序中,控制器返回一个值,但视图永远不会得到它,我得到错误: "远程主机已关闭连接。错误代码为 xxxxxx"

public ActionResult FileUpload(string positionDate)
        {

               ReturnVal = "very Lenghty Operation , comes back in 1 hour"        
                return Content(ReturnVal);
            }
            catch (Exception ex)
            {
                //Console.WriteLine(ex.Message);
                _logger.InfoFormat("DataFileUpload failed with Message {0}", ex.Message);
                throw ex;
            }

        }

ReturnVal 有我需要的消息。

function OnClick(s, e) {
    positionDate = ReportingPositionDate.GetDate().toDateString();
    //debugger;
    if (true) {
        $.ajax({
            type: "POST",
            url: "@Url.Action("FileUpload", "ImportData")",
            data: JSON.stringify({ positionDate: positionDate }),
            dataType: "text",
            contentType: "application/json; charset=utf-8",
            beforeSend: function () { lpImport.Show(); },
            success: function (msg)
            {
                ImportDataGridView.PerformCallback();
                ImportSuccessMessage.SetText(msg);
                lpImport.Hide();
            },
            Error: function (xhr) {
                alert(xhr)
                ImportDataGridView.PerformCallback();
            },
            timeout: 10000000
        })

知道如何增加此超时时间吗?当手术在 60 分钟内完成时,我的观点就会有价值。之后它因“远程主机关闭连接”而失败。 web.config 有

<httpRuntime targetFramework="4.5.1" maxRequestLength="2097151" executionTimeout="21600" />
<sessionState mode="InProc" cookieless="true" timeout="500" />

但这并没有帮助。

知道如何延长这个超时时间吗?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    在 60 分钟内完成操作时,我的视图将获得价值。

    您绝对不希望用户等待 60 分钟 - 甚至一分钟。

    理想情况下,您希望将其传递给后台调度程序,然后立即返回 UI。然后,让后台调度器执行任务。

    How to run Background Tasks in ASP.NET

    【讨论】:

    • 明白这一点。但我正在获取一些市场数据,用户应该等待它完成。
    • 嗯,http 状态较少,而且不可靠。客户端和服务器之间的会话在一段时间后过期。如果您想要双向通信,您可能需要查看 SignalR
    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多