[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中运行得非常好。
答案 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)
您可能需要确保您的网站使用的应用程序池具有托管管道模式=经典。