MvcSiteMapProvider和web.config:分析器错误消息:值不能为空

时间:2011-04-05 14:00:43

标签: asp.net-mvc-3 mvcsitemapprovider

在我的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>

我还有MvcSiteMap库dll的项目引用,这是一个名为mvc.sitemap的站点地图。 页面命名空间也如下所示:

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

但是,每当我浏览MVC3项目中的任何页面时,都会出现以下错误:

  

配置错误说明:An   处理过程中出错   需要的配置文件   服务这个请求。请查阅   下面的具体错误详情和   修改配置文件   适当。

     

分析程序错误消息:值不能   空值。参数名称:type

源错误指向这一行:

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

为什么我收到此错误?

1 个答案:

答案 0 :(得分:7)

我最终发现了自己的问题所在。 MvcSiteMap提供程序库使用反射Activator.Createinstance()方法调用您在站点地图文件中设置的提供程序。如果提供程序的格式不正确,则Activator会因上述消息而失败。

例如,visibilityprovider的站点地图中的值应为“fullqualifiednamespace.ProviderClass,AssemblyName”。

e.g. "MyApplicationNamespace.AuthenticationVisibilityProvider, MyApplication"