我的siteMap
中的web.config
元素被忽略了。为什么是这样?
我的目标是让siteMapNodeUrlResolver
生效。
的web.config
<system.web>
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider"
type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
siteMapFile=""
securityTrimmingEnabled="true"
cacheDuration="5"
enableLocalization="false"
scanAssembliesForSiteMapNodes="true"
excludeAssembliesForScan=""
includeAssembliesForScan="AACOMvc"
attributesToIgnore=""
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider"
aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
siteMapNodeUrlResolver="AACOMvc.SiteMapNodeUrlResolver, AACOMvc"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider"
siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider"
/>
</providers>
</siteMap>
<pages>
<namespaces>
<add namespace="MvcSiteMapProvider.Web.Html" />
<add namespace="MvcSiteMapProvider.Web.Html.Models" />
</namespaces>
</pages>
</system.web>
SiteMapNodeUrlResolver.cs
using MvcSiteMapProvider;
using MvcSiteMapProvider.Web.UrlResolver;
using System;
using System.Collections.Generic;
namespace AACOMvc
{
public class SiteMapNodeUrlResolver : ISiteMapNodeUrlResolver
{
public SiteMapNodeUrlResolver() : base() { }
public bool AppliesTo(string providerName)
{
throw new NotImplementedException(); // line never executes
}
public string ResolveUrl(ISiteMapNode node, string area, string controller, string action, IDictionary<string, object> routeValues)
{
throw new NotImplementedException(); // line never executes
}
}
}
当我通过在节点上设置urlResolver
属性来帮助提供程序找到我的解析程序时,它会找到它。但后来我得到了:
异常详细信息:System.MissingMethodException:类型上的构造函数 &#39; AACOMvc.SiteMapNodeUrlResolver&#39;没找到。
urlResolver
属性。该属性首先破坏了指定解析器的目的,这只是为了清理和最小化站点地图文件。所以我猜两个相关的问题。
答案 0 :(得分:0)
MvcSiteMapProvider
v4忽略了遗留的ASP.NET 2.0 web.config设置 - 这是设计使然。现在通过依赖注入100%完成配置,但是有一些appSettings
可以用于基本配置而无需使用外部DI容器。请参阅文档: