我很抱歉我的英语。我正在尝试放置一个自定义提供程序,但是当我在我的 SiteMapDataSource 提供程序中写入时,没有任何变化。当我更改他的 ID 并相应地更改 DataSourceID 页面中的属性时,会出现错误,但事实并非如此。他记住了 TopSiteMap ID,不想编译其他的。
提供程序已在 Web 配置中注册,并且在其他网站集中正常工作。但是这个有一个错误。
如果母版页菜单如所述:<SharePoint:AspMenu
ID="TopNavigationMenuV4"
Runat="server"
EnableViewState="false"
DataSourceID="topCrossSiteMap"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
UseSimpleRendering="true"
UseSeparateCss="false"
Orientation="Horizontal"
StaticDisplayLevels="1"
MaximumDynamicDisplayLevels="3"
SkipLinkText=""
CssClass="s4-tn"/>
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate">
<Template_Controls>
<asp:SiteMapDataSource
ShowStartingNode="False"
SiteMapProvider="CrossSiteMapProvider"
id="topCrossSiteMap"
runat="server" />
</Template_Controls>
</SharePoint:DelegateControl>
抛出异常:
System.Web.HttpException:“TopNavigationMenuV4”的 DataSourceID 必须是 IHierarchicalDataSource 类型的控件的 ID。找不到 ID 为“topCrossSiteMap”的控件。
并且在ULS中在请求没有相关ID的记录前2毫秒访问内容数据库时出现如下错误:
PermissionMask 检查失败。要求 0x00010000,有 0x00000000
和
如果母版页菜单如所述:拒绝访问。异常:System.UnauthorizedAccessException:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
在 Microsoft.SharePoint.Library.SPRequestInternalClass.GetWebMetainfo(String bstrUrl)
在 Microsoft.SharePoint.Library.SPRequest.GetWebMetainfo(String bstrUrl)。
<SharePoint:AspMenu
ID="TopNavigationMenuV4"
Runat="server"
EnableViewState="false"
DataSourceID="topSiteMap"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
UseSimpleRendering="true"
UseSeparateCss="false"
Orientation="Horizontal"
StaticDisplayLevels="1"
MaximumDynamicDisplayLevels="3"
SkipLinkText=""
CssClass="s4-tn"/>
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate">
<Template_Controls>
<asp:SiteMapDataSource
ShowStartingNode="False"
SiteMapProvider="CrossSiteMapProvider"
id="topCrossSiteMap"
runat="server" />
</Template_Controls>
</SharePoint:DelegateControl>
一切正常,没有错误。但菜单显然使用了 SPNavigationProvider。
还有一个细节:网站集的不同面孔以不同的方式显示。(一个退出错误,另一个什么都没有改变) 首先以为是http.sys对象的问题。尝试重新启动 WFE 服务器。但这并没有帮助。