MvcSiteMapProvider и web.config: сообщение об ошибке парсера: значение не может быть нулевым

В моем файле web.config у меня есть:

<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
      <providers>
        <clear />
        <add name="MvcSiteMapProvider"
             type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
             siteMapFile="~/Mvc.Sitemap"
             securityTrimmingEnabled="true"
             cacheDuration="5"
             enableLocalization="false"
             scanAssembliesForSiteMapNodes="true"
             excludeAssembliesForScan=""
             includeAssembliesForScan=""
             attributesToIgnore=""
             nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
             controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
             actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider"
             aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
             siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
             siteMapNodeVisibilityProvider="ekmProspector.web.SiteMapProviders.AuthenticatedVisibilityProvider, ekmProspector"
             siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider"
         />
      </providers>
    </siteMap>

У меня также есть ссылка на проект библиотеки dll MvcSiteMap, карта сайта с именем mvc.sitemap. Пространства имен страниц также выглядят так:

   <pages>
      <namespaces>
        ...
        <add namespace="MvcSiteMapProvider.Web.Html"/>
        <add namespace="MvcSiteMapProvider.Web.Html.Models"/>        
      </namespaces>
    </pages>

Однако всякий раз, когда я перехожу на любую страницу в моем проекте MVC3, я получаю следующую ошибку:

Описание ошибки конфигурации: Произошла ошибка во время обработки файла конфигурации, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже сведениями об конкретной ошибке и соответствующим образом измените файл конфигурации.

Сообщение об ошибке синтаксического анализатора: значение не может быть нулевым. Имя параметра: тип

И исходная ошибка указывает на эту строку:

Line 91:         <clear />
Line 92:         <add name="MvcSiteMapProvider"
Line 93:              type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"

Почему я получаю эту ошибку?


person jaffa    schedule 05.04.2011    source источник


Ответы (1)


В конце концов я сам понял, в чем проблема. Библиотека провайдера MvcSiteMap использует метод отражения Activator.Createinstance() для вызова провайдера, который вы настроили в файле карты сайта. Если формат провайдера неверен, Activator завершается ошибкой с указанным выше сообщением.

Например, значение в карте сайта для провайдера видимости должно быть "fullqualifiednamespace.ProviderClass, AssemblyName".

e.g. "MyApplicationNamespace.AuthenticationVisibilityProvider, MyApplication"
person jaffa    schedule 06.04.2011
comment
Я создал собственный VisibilityProvider, а позже изменил пространство имен своего веб-проекта. Начал получать эту не очень описательную ошибку. Затем я погуглил и нашел ваш вопрос и ответ. StackOverflow действительно ПОТРЯСАЮЩИЙ! Спасибо, что поделился... :) - person Leniel Maccaferri; 07.06.2012
comment
+1 - Это сработало и для меня. Хорошая находка, Джаффа. Очень признателен. - person Kurt Johnson; 25.03.2013