【发布时间】: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