2013-09-26 71 views
1

编辑:这似乎是我的Routeconfig.cs有问题。当我除了最基本的路由,我可以找到我的sitemap.xml。我会调查并回答一个答案。MvcSiteMapProvider - 不生成sitemap.xml

-

我在MVC4项目安装MvcSiteMapProvider.MVC4通过的NuGet。

我Mvc.sitemap看起来是这样的(这是我穿过的NuGet得到了它)

<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0" 
      xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0 MvcSiteMapSchema.xsd"> 

    <mvcSiteMapNode title="Home" controller="Home" action="Index"> 
    <mvcSiteMapNode title="About" controller="Home" action="About"/> 
    </mvcSiteMapNode> 

</mvcSiteMap> 

我已经在我的项目相应的控制器和行动(虽然我的HomeController有,我没有带创作的更多行动在架构)

在我RouteConfig.cs的底部添加此类似

MvcSiteMapProvider.Web.Mvc.XmlSiteMapController.RegisterRoutes(routes); 

一切编译罚款和我已经没有其他改变到代码。

但是,当我去本地主机:xxxx/sitemap.xml我找不到文件(该资源找不到。)。我的印象是,这可能是开箱即用的。我错过了什么吗?

MvcSiteMapProvider像@ Html.MvcSiteMap()这样的其他东西,SiteMap()工作得很好,但它不会生成sitemap.xml。

回答

3

有我RouteConfig.cs文件格式错误和MVC路由分析器简单地将其达到临界代码之前停止:

MvcSiteMapProvider.Web.Mvc.XmlSiteMapController.RegisterRoutes(routes);

确保您RouteConfig.cs没有停止中途它应该没问题。

所以这都是我的错。

+0

实际上,当使用v4.0.14或更高版本(以及内部DI容器)时,您不需要在配置中包含此行,因为它现在自动完成。 – NightOwl888

+0

好的,那太好了。我没有测试,但我怀疑它会起作用,因为我修复了我的RouteConfig。 –