【问题标题】:OnActionExecuting Not Getting ExecutedOnActionExecuting 未执行
【发布时间】:2015-01-15 22:50:48
【问题描述】:

我正在对 ASP.NET MVC 应用程序进行故障排除,但在一台服务器上 OnActionExecuting 未触发。很久没看滤镜了。什么可以阻止 OnActionExecuting 运行?在我们的应用程序中的效果是用户上下文永远不会真正设置(初始化)......所以一切都将用户重定向回登录页面。

这是过滤器的代码。注意“Jupiter”是项目的代号

public class JupiterAuthenticationFilter :  IActionFilter
{
    private readonly IJupiterContext _jupiterContext;

    public JupiterAuthenticationFilter(IJupiterContext jupiterContext)
    {
        if (jupiterContext == null)
        {
            throw new ArgumentNullException("jupiterContext");
        }

        _jupiterContext = jupiterContext;
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        _jupiterContext.Initialize();
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {

    }
}

【问题讨论】:

  • 构造函数是否被调用且上下文不为空?
  • 授权过滤器总是在其他过滤器之前被调用,所以如果用户没有登录,这个不会被调用
  • 是的,ctor 被调用并且上下文不为空,但上下文的属性尚未设置。前任。 int UserId = 0
  • 知道为什么这可以在本地机器和生产机器上工作,而不是在我的 QA 机器上。完全相同的代码。

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

当您的 Controller 具有 System.Web.MVC 实现,但 ActionFilter 具有 System.Web.Http 时,可能会发生这种情况。

【讨论】:

  • 谢谢! @user3873265
猜你喜欢
  • 2019-04-13
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多