【问题标题】:MvcSiteMapProvider and web.config: Parser Error Message: Value cannot be nullMvcSiteMapProvider 和 web.config:解析器错误消息:值不能为空
【发布时间】:2011-07-30 00:19:01
【问题描述】:

在我的 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 项目中的任何页面时,都会收到以下错误:

配置错误描述:一个 处理过程中发生错误 所需的配置文件 服务这个请求。请查阅 下面的具体错误详细信息和 修改你的配置文件 适当的。

解析器错误消息:值不能 空值。参数名称:类型

并且源错误指向这一行:

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

为什么会出现这个错误?

【问题讨论】:

    标签: asp.net-mvc-3 mvcsitemapprovider


    【解决方案1】:

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

    例如,站点地图中可见性提供者的值应为“fullqualifiednamespace.ProviderClass, AssemblyName”。

    e.g. "MyApplicationNamespace.AuthenticationVisibilityProvider, MyApplication"
    

    【讨论】:

    • 我创建了一个自定义的VisibilityProvider,后来我更改了我的 Web 项目的命名空间。开始收到这个不那么描述性的错误。然后我用谷歌搜索并找到了你的问题和答案。 StackOverflow 真的很棒!感谢分享... :)
    • +1 - 这对我也有用。很好的发现,雅法。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多