C# 类具有作为基类ActionFilterAttribute的问题

C# 类具有作为基类ActionFilterAttribute的问题,c#,asp.net-core,actionfilterattribute,C#,Asp.net Core,Actionfilterattribute,以下类创建名为[SessionTimeout]的自定义操作筛选器: public class SessionTimeoutAttribute : ActionFilterAttribute { private readonly IHttpContextAccessor _httpContextAccessor; private readonly ISession _session; public SessionTimeoutAttribute(IHttpContextAc

以下类创建名为[SessionTimeout]的自定义操作筛选器:

public class SessionTimeoutAttribute : ActionFilterAttribute
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    private readonly ISession _session;
    public SessionTimeoutAttribute(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
        _session = _httpContextAccessor.HttpContext.Session;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext ctx = _httpContextAccessor.HttpContext;
        if (!ctx.User.Identity.IsAuthenticated)
        {
            filterContext.Result = new RedirectResult("~/Account/Login");
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}
正如现在的实现一样,当我用[SessionTimeout]装饰一个类时,它还会询问构造函数的参数

如果可能的话,我希望避免这种情况

有人能帮我吗?
谢谢。

HttpContext
ActionExecutingContext
对象的属性,因此不需要通过构造函数将其传递到。类似的方法应该可以工作(注意:这不是经过测试的)


这似乎是应该内置的。httpcontext也应该可以从
filterContext
中获得。@DanielA.White:本质上,我应该做什么才能在不通过httpcontext的情况下使用[SessionTimeout]属性限定类?你能给我解释一下样品吗?谢谢。你能看一下这个话题吗?
public class SessionTimeoutAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext ctx = filterContext.HttpContext;
        if (!ctx.User.Identity.IsAuthenticated)
        {
            filterContext.Result = new RedirectResult("~/Account/Login");
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}