【问题标题】:MVCSiteMapProvider crashed with null objectMVCSiteMapProvider 因空对象而崩溃
【发布时间】:2011-11-05 02:21:48
【问题描述】:

我正在使用 MvcSiteMapProvider 为我的网站创建菜单。它工作正常,但突然出现错误:

System.NullReferenceException:对象引用未设置为对象的实例。

这是堆栈跟踪:

[NullReferenceException: Object reference not set to an instance of an object.]

MvcSiteMapProvider.AuthorizeAttributeAclModule.IsAccessibleToUser(IControllerTypeResolver controllerTypeResolver, DefaultSiteMapProvider provider, HttpContext context, SiteMapNode node) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\AuthorizeAttributeAclModule.cs:80
   MvcSiteMapProvider.DefaultAclModule.IsAccessibleToUser(IControllerTypeResolver controllerTypeResolver, DefaultSiteMapProvider provider, HttpContext context, SiteMapNode node) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\DefaultAclModule.cs:61
   MvcSiteMapProvider.DefaultSiteMapProvider.IsAccessibleToUser(HttpContext context, SiteMapNode node) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\DefaultSiteMapProvider.cs:178
   System.Web.SiteMapNode.IsAccessibleToUser(HttpContext context) +17
   System.Web.StaticSiteMapProvider.GetChildNodes(SiteMapNode node) +378
   System.Web.SiteMapNode.get_ChildNodes() +30
   System.Web.SiteMapNode.get_HasChildNodes() +10
   MvcSiteMapProvider.Web.Html.MenuHelper.BuildModel(MvcSiteMapHtmlHelper helper, SiteMapNode startingNode, Boolean startingNodeInChildLevel, Boolean showStartingNode, Int32 maxDepth, Boolean drillDownToCurrent) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\Web\Html\MenuHelper.cs:293
   MvcSiteMapProvider.Web.Html.MenuHelper.Menu(MvcSiteMapHtmlHelper helper, String templateName, SiteMapNode startingNode, Boolean startingNodeInChildLevel, Boolean showStartingNode, Int32 maxDepth, Boolean drillDownToCurrent) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\Web\Html\MenuHelper.cs:234
   MvcSiteMapProvider.Web.Html.MenuHelper.Menu(MvcSiteMapHtmlHelper helper) in c:\Projects\Codeplex\TFS10\mvcsitemap\Branches\3.1.0\src\MvcSiteMapProvider\MvcSiteMapProvider\Web\Html\MenuHelper.cs:31

我想不出我为引入此错误所做的任何更改。所做的唯一更改是由于使用 StyleCop 的结果(例如更改使用顺序、方法、属性等)。有什么想法吗?

【问题讨论】:

  • 我遇到了同样的问题 - 您是否尝试在 MVC 上下文之外访问站点地图?例如。网页表格?这就是我想要做的,我得到了同样的例外。
  • @pnmcosta 我很想知道您是否设法解决了基于网络表单的问题。我们有一个 MVC 网站作为 WebForms 网站内的应用程序工作,并且遇到了同样的问题。奇怪的是,它在我们的测试环境中工作!

标签: asp.net-mvc-3 mvcsitemapprovider


【解决方案1】:

如果您不需要安全调整(例如节点的权限/角色),请在您的 web.config 中注册站点地图提供程序时设置 securityTrimmingEnabled="false",您应该不会再出现此错误。

我在 http://mvcsitemap.codeplex.com/workitem/6337 上提出了一个问题,但它可能不是你的问题。

【讨论】:

  • 我遇到了同样的问题(2012 年 7 月 15 日最新版本的 MvcSiteMap)并将 securityTrimmingEnabled 标志设置为 false 也为我解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2011-03-13
  • 2013-03-09
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多