2016-11-02 34 views
0

Элемент siteMap в моем web.config игнорируется. Почему это? Моя цель - получить siteMapNodeUrlResolver.web.config siteMap элемент игнорируется

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 атрибут. Атрибут поражает цель определения разрешающего устройства, в первую очередь, это просто очистка и минимизация файла Sitemap.
  2. После того, как он находит распознаватель мне нужно работать

Так что я думаю, два связанных с этим вопросов.

ответ

0

MvcSiteMapProvider v4 игнорирует устаревшие настройки ASP.NET 2.0 web.config - это по дизайну. Конфигурация теперь выполняется на 100% путем инъекции зависимостей, но есть некоторые appSettings, которые можно использовать для базовых конфигураций без использования внешнего контейнера DI. Обратитесь к документации: