由于某些原因,我总是使用Ninject MVC在运行时将我的实际Db绑定到DbContext
。我在使用Ninject时遇到的一个问题是,当我需要访问AuthorizeAttribute
等属性中的绑定对象时,Ninject会导致属性的两次触发,导致出现错误,例如遇到空引用。例如:
public class UserAccessAttribute : AuthorizeAttribute
{
Boolean isLoggedIn = false;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
DbContext db = App_Start.NinjectWebCommon.GetKernel.Get<DbContext>();
IdentityContext identityContext = new IdentityContext(httpContext);
....
return isLoggedIn;
}
...
}
在上面的代码中,Ninject导致属性被触发两次,导致在第二个触发器中遇到Null HttpContext
。我彻底检查了代码很多次,我确定它与Ninject有关。那为什么会发生,如何解决呢?