我在HomeController
上使用了[Authorize]
属性,每次尝试访问它时,都会抛出NullReferenceException
。
这真的很奇怪,因为我以前多次使用[Authorize]
,而且它运行得很好。唯一不同的是,这个应用程序是托管在我们自己的Web服务器上,使用Windows 7和IIS 7.5。
以下是堆栈跟踪:
[NullReferenceException: Object reference not set to an instance of an object.]
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 filters, 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 step, Boolean& completedSynchronously) +371
编辑:
在查看AuthorizeCore
方法的代码时,似乎AuthorizeCore
抛出NullReferenceException
是因为它获取了一个NULL的HttpContextBase
。
这可能吗?因为应用程序中的其他所有内容都运行良好,如访问数据库、创建授权cookie等。
编辑2:
只有在将其发布到Web服务器后才会发生这种情况。在开发过程中,从Visual Studio中运行完全正常。