相关疑难解决方法(0)

使用长时间运行的ASP.NET MVC核心控制器HTTPPost方法超时

我在我的ASP.NET Core MVC视图页面中使用了ajax调用

MyView.cshtml

          $.ajax({
                processData: false,
                contentType: false,
                data: new FormData(this),
                type: $(this).attr('method'),
                url: $(this).attr('action'),
                cache: false,
                success: function (data) {
                        $('#mydiv).html(data);
                        $('#bootstrapModal).modal('show');
Run Code Online (Sandbox Code Playgroud)

控制器发布方法"

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> MyLongRunningMethod(MyViewModel viewModel)
    {
        await MyProcess.Longprocess1();
        await MyProcess.Longprocess2();
        await MyProcess.Longprocess3();
        await MyProcess.Longprocess4();
        return PartialView("_MyPartialPage");
    }
Run Code Online (Sandbox Code Playgroud)

这有效,但只对长时间运行的过程有问题.在调试模式下,当进程花费的时间超过大约2分钟时,我收到以下错误

在此输入图像描述

我理解这与过期超时有关

在以前版本的ASP.NET MVC中,您显然可以增加asp.net控制器操作的超时.

HttpContext.Current.Server.ScriptTimeout = 90000;
Run Code Online (Sandbox Code Playgroud)

然而,这不存在于 ASP.NET Core

我想增加特定asp.net控制器的调试和部署超时.

对于生产,我可以web.config通过将requestTimeout添加到现有的httpPlatform标记来全局设置它.例如10分钟

<httpPlatform requestTimeout="00:10:00" ....
Run Code Online (Sandbox Code Playgroud)

一个类似的问题被问到,但答案给出了使用CancellationToken但阅读它,它似乎不能帮助我超时.

  1. 如何在部署Visual Studio 2015调试模式时设置超时?
  2. 是否存在每个控制器超时设置ASP.NET 4

timeout asp.net-core-mvc asp.net-core

31
推荐指数
5
解决办法
4万
查看次数

标签 统计

asp.net-core ×1

asp.net-core-mvc ×1

timeout ×1