Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 生产时MvcSiteMapProvider中的NullReferenceException_Asp.net Mvc 3_Mvcsitemapprovider - Fatal编程技术网

Asp.net mvc 3 生产时MvcSiteMapProvider中的NullReferenceException

Asp.net mvc 3 生产时MvcSiteMapProvider中的NullReferenceException,asp.net-mvc-3,mvcsitemapprovider,Asp.net Mvc 3,Mvcsitemapprovider,问题是我经常在生产站点(ASP.NET MVC 3)收到错误,但无法在本地重现此错误。 例外情况的文本为: ExceptionType: System.NullReferenceException Message: Object reference not set to an instance of an object. StackTrace: at System.Collections.Specialized.NameObjectCollectionBase.BaseGetAllKeys

问题是我经常在生产站点(ASP.NET MVC 3)收到错误,但无法在本地重现此错误。 例外情况的文本为:

ExceptionType: System.NullReferenceException
Message: Object reference not set to an instance of an object.
StackTrace:
   at System.Collections.Specialized.NameObjectCollectionBase.BaseGetAllKeys()
   at System.Collections.Specialized.NameValueCollection.get_AllKeys()
   at MvcSiteMapProvider.MvcSiteMapNode.get_MetaAttributes()
   at MvcSiteMapProvider.Web.Html.SiteMapNodeModelMapper.MapToSiteMapNodeModel(SiteMapNode node, MvcSiteMapNode mvcNode, IDictionary`2 sourceMetadata)
   at MvcSiteMapProvider.Web.Html.SiteMapPathHelper.BuildModel(MvcSiteMapHtmlHelper helper, SiteMapNode startingNode)
   at MvcSiteMapProvider.Web.Html.SiteMapPathHelper.SiteMapPath(MvcSiteMapHtmlHelper helper, String templateName)
   at ASP._Page_Views_Shared__LoggedInLayout_cshtml.Execute() in c:\Solution\Sites\Project2Site\Views\Shared\_LoggedInLayout.cshtml:line 86
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
   at System.Web.WebPages.WebPageBase.PopContext()
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
异常类型:System.NullReferenceException 消息:对象引用未设置为对象的实例。 堆栈跟踪: 位于System.Collections.Specialized.NameObjectCollectionBase.BaseGetAllKeys()处 在System.Collections.Specialized.NameValueCollection.get_AllKeys()中 在mvcsitemprovider.mvcsitemasnode.get_MetaAttributes()处 在MvcSiteMapProvider.Web.Html.SiteMapNodeModelMapper.MapTosItemsNodeModel(SiteMapNode节点,MVCSItemsNode mvcNode,IDictionary`2 sourceMetadata) 在MvcSiteMapProvider.Web.Html.SiteMapPathHelper.BuildModel(MvcSiteMapHtmlHelper helper,SiteMapNode startingNode) 在MvcSiteMapProvider.Web.Html.SiteMapPathHelper.SiteMapPath(MvcSiteMapHtmlHelper helper,字符串templateName) 在c:\Solution\Sites\Project2Site\Views\Shared\\LoggedInLayout.cshtml中的ASP.页面视图共享日志布局cshtml.Execute():第86行 在System.Web.WebPages.WebPageBase.ExecutePageHierarchy()中 在System.Web.Mvc.WebViewPage.ExecutePageHierarchy()中 位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页) 在System.Web.WebPages.WebPageBase.Write(HelperResult结果)中 位于System.Web.WebPages.WebPageBase.RendersUrounding(字符串partialViewName,操作`1 body) 在System.Web.WebPages.WebPageBase.PopContext()中 在System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文)中 在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1C.b_uuu19()中 位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器、ResultExecutingContext预文本、Func`1 continuation) 位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext ControllerContext,IList`1 filters,ActionResult ActionResult) 位于System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext ControllerContext,String actionName) 我在本地没有这样的错误。这里是调用
MvcSiteMap().SiteMapPath()
方法的地方:

也许有人以前也有过同样的问题。如果是,请分享您的解决方案


提前感谢。

这不会直接回答您的问题,但可能会帮助您调试问题,因为它只发生在生产环境中,而不会发生在开发/调试环境中

考虑更换您的线路:

@Html.MvcSiteMap().SiteMapPath()
比如:

@SafeBreadCrumb()

@helper SafeBreadCrumb() {
    MvcHtmlString output;
    try
    {
        output = Html.MvcSiteMap().SiteMapPath();
    }
    catch (Exception e)
    {
        output = new MvcHtmlString(e.Message);    
    }
    <text>@output</text>
}
@SafeBreadCrumb()
@助手安全面包屑(){
mvchtml字符串输出;
尝试
{
output=Html.MvcSiteMap().SiteMapPath();
}
捕获(例外e)
{
输出=新的MvcHtmlString(例如消息);
}
@输出
}

感觉有点脏,但这比获取MvcSiteMapProvider的源代码并坚持一些日志记录要容易!如果它发生在调试中,您就不需要尝试这个。另外,它只是一个视图更改,因此不需要重新编译。

您是否查看了此项目现在所在位置的问题页面,或之前所在位置的讨论论坛?如果是这样,您可以添加一些关于您可能要添加的任何动态节点的更多信息。或者您的所有站点地图节点都是在Mvc.sitemap文件中定义的?我已经在Github和Codeplex上查看了这个问题,但还没有找到具有相同stacktrace的。所有节点都在Mvc.Sitemap文件中定义。请发布Mvc.Sitemap文件的内容。我知道理论是,这里的内容不应该是错误的,因为它在调试中工作,但在生产中不工作,但可能会提供一些线索。。。。以及web.config中的站点地图部分?我想这可能是第一个要检查的地方。你能从web上粘贴相关部分吗?conifig应该是这样的: