当前位置:首页 > 技术积累 > 正文内容

ASP.NET MVC WebApi控制器方法使用async假死超时问题

竹林之风4年前 (2021-05-07)技术积累3227

        在一个ASP.NET MVC WebApi控制器方法中使用async标记为异步方法后,有时会假死超时。根本原因是同步方法和异步方法混合造成的死锁问题。

using System;

namespace Demo
{
    public class DemoController : ApiController
    {
        public async Task<string> DemoAction()
        {
            await Task.Delay(1000);
            return "OK";
        }
    }
}

        因为async、await具有传染性,使用了它们则在方法上层都要依次传递。所以还需要在Filter、DelegatingHandler等中也使用async、await。

using System;

namespace Demo.Filters
{
    public class BaseFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
        }

        public override async void OnActionExecuting(ActionExecutingContext filterContext)
        {
            await ……
        }

        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
        }

        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            
        }   
    }
}
using System;

namespace Demo.Filters
{
    public class CommonDelegatingHandler : DelegatingHandler
    {
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            HttpResponseMessage response = await base.SendAsync(request, cancellationToken);          
            return response;
        }
    }
}


扫描二维码推送至手机访问。

版权声明:本文由久爱编程网发布,如需转载请注明出处。

本文链接:https://www.9icode.com/index.php/post/356.html

分享给朋友:

“ASP.NET MVC WebApi控制器方法使用async假死超时问题” 的相关文章

实现网页原路返回:从哪个页面跳转过来就返回哪个页面

实现网页原路返回:从哪个页面跳转过来就返回哪个页面

一、需求        导航对于PC网站或WAP网站有着相当重要的作用,它有利于提升用户体验,不至于让用户迷路。而“返回”就是导航的功能之一,主要体现在WAP网...

Android开发从新手开始(一)——概述

Android开发从新手开始(一)——概述

前言        做为一个程序员,不应该将自己限定在自己熟悉的平台和语言上,而也应该多去了解一下其它平台和语言。这样可以吸取各个平台和语言的思想,提升自己解决...

云平台多租户系统的设计方案

云平台多租户系统的设计方案

        多租户(Multi Tenancy)是指在一个云平台上,多个不同的客户共用相同的平台和架构但又相互独立并对各自的用户提供服务。多租户相同有4个特...

IIS中使用PHP-CGI报500错误问题可能原因

IIS中使用PHP-CGI报500错误问题可能原因

        在IIS中使用CGI方式运行PHP网站突然报500服务器错误,需要判断当前系统的软件环境有何变化去一一排查,通常可能的原因有:(1)PHP程序因...

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常时,其中一个原因是:在已经重定向后又重定向。在ASP.NET中实现重定向有以下几...

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常,是因为设置Response的StatusCode之前,程序已设置响应标头。可从以...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。