[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited=true, AllowMultiple=false)]
public class AsyncTimeoutAttribute ActionFilterAttribute
{
public AsyncTimeoutAttribute(int duration);
public override void OnActionExecuting(ActionExecutingContext filterContext);
public int Duration { get; }
}
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited=true, AllowMultiple=false)]
public sealed class NoAsyncTimeoutAttribute AsyncTimeoutAttribute
{
// Methods
public NoAsyncTimeoutAttribute() base(-1)
{
}
}
从上面给出的定义我们可以看出这两个特性均是ActionFilter。AsyncTimeoutAttribute的构造函数接受一个表示超时时限(以毫秒为单位)的整数作为其参数,它通过重写OnActionExecuting方法将指定的超时时限设置给当前Controller的AsyncManager的Timeout属性进行。NoAsyncTimeoutAttribute是AsyncTimeoutAttribute的继承者,它将超时时限设置为-1,意味着它解除了对超时的限制。
从应用在这两个特性的AttributeUsageAttribute定义可看出,它们既可以应用于类也可以用于也方法,意味着我们可以将它们应用到Controller类型或者异步Action方法(仅对XxxAsync方法有效,不能应用到XxxCompleted方法上)。如果我们将它们同时应用到Controller类和Action方法上,针对方法级别的特性无疑具有更高的优先级。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。








