使用授权属性时出现NullReferenceException

时间:2011-08-23 10:42:27

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

[Authorize]上有HomeController属性,每当我尝试访问它时,它都会抛出NullReferenceException

这真的很奇怪,因为我之前已经多次使用[Authorize]并且它工作得很好。在这种情况下,唯一不同的是此应用程序托管在我们自己的Web服务器上使用Windows 7& IIS 7.5

这是Stack Trace:

  

[NullReferenceException:对象引用未设置为的实例   对象。]
  System.Web.Mvc.AuthorizeAttribute.AuthorizeCore(HttpContextBase   httpContext)+38
  System.Web.Mvc.AuthorizeAttribute.OnAuthorization(AuthorizationContext   filterContext)+160
  System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext   controllerContext,IList`1过滤器,ActionDescriptor actionDescriptor)   155
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext   controllerContext,String actionName)+784976
  System.Web.Mvc.Controller.ExecuteCore()+159
  System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)   +335 System.Web.Mvc。<> c_ DisplayClassb.b _5()   +62
  System.Web.Mvc.Async。<> c_ DisplayClass1.b _0()+ 20
  System.Web.Mvc。<> c_ DisplayClasse.b _d()+54
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +453 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously)+371

修改

在查看AuthorizeCore方法的代码时,似乎AuthorizeCore正在抛出NullReferenceException,因为它获得了NULL HttpContextBase

有可能吗?因为应用程序中的其他所有工作都很好,比如访问数据库,创建auth cookie等。

编辑2:

将其发布到Web Server后,发生。在开发过程中,它在Visual Studio中运行得非常好。

3 个答案:

答案 0 :(得分:4)

问题更糟糕HttpContext甚至在Controller和Razor视图中都没有。因此,我使用aspnet_regiis -ir重新安装ASP.NET v4.0。然后使用在注册期间创建的ASP.NET 4.0池,而不是使用DefaultAppPool

它开始正常工作。它还解决了我在我的应用程序web.config中覆盖<modules runAllManagedModulesForAllRequests="true"/>的另一个问题。

答案 1 :(得分:1)

在我的情况下,我在其中一个HttpContext.Current.User应用程序事件中将global.asax设置为null。当我保持User属性不变时,错误就消失了。

答案 2 :(得分:0)

您可能需要确保您的网站使用的应用程序池具有托管管道模式=经典。