Asp.net mvc 4 使用asp.net MVCSiteMapProvider v4和2个站点地图
您好,我想使用asp.net MVCSiteMapProvider v4和两个不同的站点地图,一个用于主站点,另一个用于管理区域。我做了一些搜索,发现您需要将其插入web.config:Asp.net mvc 4 使用asp.net MVCSiteMapProvider v4和2个站点地图,asp.net-mvc-4,mvcsitemapprovider,Asp.net Mvc 4,Mvcsitemapprovider,您好,我想使用asp.net MVCSiteMapProvider v4和两个不同的站点地图,一个用于主站点,另一个用于管理区域。我做了一些搜索,发现您需要将其插入web.config: <siteMap defaultProvider="AppSiteMapProvider" enabled="true"> <providers> <clear /> <add name="AppSiteMapProvider" type="Mvc
<siteMap defaultProvider="AppSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="AppSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider,
MvcSiteMapProvider" siteMapFile="~/Mvc2.sitemap"
securityTrimmingEnabled="true" cacheDuration="5"
enableLocalization="true" scanAssembliesForSiteMapNodes="true"
includeAssembliesForScan="" excludeAssembliesForScan=""
attributesToIgnore="visibility"
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator,
MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver,
MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver,
MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule,
MvcSiteMapProvider"
siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider"
siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
<add name="AdminSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider,
MvcSiteMapProvider" siteMapFile="~/Areas/Admin/Mvc.Sitemap"
securityTrimmingEnabled="true" cacheDuration="5" enableLocalization="true"
scanAssembliesForSiteMapNodes="true" includeAssembliesForScan=""
excludeAssembliesForScan="" attributesToIgnore="visibility"
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver,
MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider"
siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
</providers>
</siteMap>
但它不起作用。
有人也有同样的问题吗???????
顺便说一句,错误是:
Could not find file 'P:\MVCTest\MvcSite1\MvcSite1\Mvc.sitemap'.
这就好像他们只是忽略了web.config这些设置在使用v4时被忽略了。MvcSiteMapProvider不再使用Microsoft的站点地图提供程序模型,
部分可以完全从web.config中删除
要在一个应用程序中处理两个站点地图的需求,您需要使用依赖项注入容器并实现1或2个自定义类来将传入的HTTP请求映射到特定的站点地图实例
可以通过安装一个mvcsitemprovider.MVC[x].DI.[ContainerName]包来处理DI部分
ISitemApacheKeyGenerator根据HTTP请求提供“当前”站点地图的名称,ISitemApacheKeyToBuilderSetMapper告诉MvcSiteMapProvider要使用哪个构建器(可以为XML文件或其他源配置)
有关如何完成此操作的完整示例,请参见
Could not find file 'P:\MVCTest\MvcSite1\MvcSite1\Mvc.sitemap'.