jaf*_*ffa 4 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>
Run Code Online (Sandbox Code Playgroud)
我还有一个项目参考MvcSiteMap库dll,一个名为mvc.sitemap的站点地图.页面命名空间也如下所示:
<pages>
<namespaces>
...
<add namespace="MvcSiteMapProvider.Web.Html"/>
<add namespace="MvcSiteMapProvider.Web.Html.Models"/>
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
但是,每当我浏览到我的MVC3项目中的任何页面时,我都会收到以下错误:
配置错误说明:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.
分析器错误消息:值不能为空.参数名称:类型
并且源错误指向此行:
Line 91: <clear />
Line 92: <add name="MvcSiteMapProvider"
Line 93: type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
我最终发现自己的问题是什么.MvcSiteMap提供程序库使用反射Activator.Createinstance()方法调用您在站点地图文件中设置的提供程序.如果提供程序的格式不正确,则Activator将失败并显示上述消息.
例如,visibilityprovider的站点地图中的值应为"fullqualifiednamespace.ProviderClass,AssemblyName".
e.g. "MyApplicationNamespace.AuthenticationVisibilityProvider, MyApplication"
Run Code Online (Sandbox Code Playgroud)