【问题标题】:web.config siteMap element ignoredweb.config 站点地图元素被忽略
【发布时间】: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' 未找到。

  1. 我宁愿在全局范围内指定我的解析器,也不愿指定urlResolver 属性。该属性破坏了首先指定解析器的目的,即清理和最小化站点地图文件。
  2. 找到解析器后,我需要它工作

所以我猜有两个相关的问题。

【问题讨论】:

    标签: mvcsitemapprovider


    【解决方案1】:

    MvcSiteMapProvider v4 忽略旧版 ASP.NET 2.0 web.config 设置 - 这是设计使然。配置现在 100% 通过依赖注入完成,但有一些 appSettings 可以用于基本配置,而无需使用外部 DI 容器。参考文档:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多