我有[Authorize]属性HomeController,每当我试图访问它时,它会抛出一个NullReferenceException
这真的很奇怪,因为我[Authorize]之前已经使用了很多次而且工作得很好.在这种情况下,唯一的区别是此应用程序使用Windows 7和IIS 7.5托管在我们自己的Web服务器上
这是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 step,Boolean&completedSynchronously) +371
编辑:
在查看AuthorizeCore方法代码时,似乎AuthorizeCore是NullReferenceException因为它获取NULL 而抛出HttpContextBase.
有可能吗?因为应用程序中的其他所有工作都很好,比如访问数据库,创建auth cookie等.
编辑2:
只有在将其发布到Web Server后才会发生这种情况.在开发过程中,它在Visual Studio中运行得非常好.
更糟糕的是,HttpContext在 Controller 和 Razor 视图中甚至不可用。因此,我使用aspnet_regiis -ir. 然后使用ASP.NET 4.0注册期间创建的池而不是使用DefaultAppPool.
它开始工作正常。它还解决了我<modules runAllManagedModulesForAllRequests="true"/>的应用程序 web.config 中的另一个问题。
| 归档时间: |
|
| 查看次数: |
4991 次 |
| 最近记录: |