【发布时间】:2016-11-02 18:14:42
【问题描述】:
web.config 中的 siteMap 元素被忽略。为什么是这样?
我的目标是让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:类型的构造函数 'AACOMvc.SiteMapNodeUrlResolver' 未找到。
- 我宁愿在全局范围内指定我的解析器,也不愿指定
urlResolver属性。该属性破坏了首先指定解析器的目的,即清理和最小化站点地图文件。 - 找到解析器后,我需要它工作
所以我猜有两个相关的问题。
【问题讨论】: