2011-10-17 42 views
1

我正在使用MvcSiteMapProvider爲我的網站創建菜單。它正常工作,但突然失敗,出現錯誤: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的結果(例如,改變使用順序,方法,屬性等)。任何想法?

+0

我有同樣的問題 - 您是否嘗試訪問MVC上下文以外的站點地圖?例如。 webform頁面?這就是我想要做的,我得到同樣的例外。 –

+0

@pnmcosta我很想知道你是否設法解決你基於webform的問題。我們有一個MVC網站作爲WebForms網站內的應用程序工作,並且遇到了同樣的問題。奇怪的是,它在我們的測試環境中工作! – dougajmcdonald

回答

4

如果您不需要安全修整(例如節點的權限/角色),請在Web.config中註冊站點地圖提供程序時設置securityTrimmingEnabled =「false」,並且不應再有此錯誤。

我在http://mvcsitemap.codeplex.com/workitem/6337上提出了一個問題,但它可能並不是你的問題。

+0

我有同樣的問題(最新版本的MvcSiteMap截至2012年7月15日),並將securityTrimmingEnabled標誌設置爲false也修復了我的錯誤。 – larryq