0

我很抱歉我的英语。我正在尝试放置一个自定义提供程序,但是当我在我的 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 服务器。但这并没有帮助。

4

1 回答 1

0

我找到了解决方案。但我找不到解释。在某些物种缓存中仍然如此。


当我在 DelegateСontrol 中更改这两个 ID 时,页面加载没有错误。

于 2014-01-22T16:08:14.660 回答