2014-01-21 4 views
0

영어로 죄송합니다. 사용자 지정 공급자를 넣으려고하지만 SiteMapDataSource 공급자에 쓸 때 아무 것도 변경되지 않습니다. ID를 변경하면 그에 따라 DataSourceID 페이지에서 속성을 변경하면 오류가 발생합니다. 그는 TopSiteMap ID를 기억하고 다른 것을 컴파일하고 싶지 않습니다.aspmenu에서 DataSourceID를 변경할 수 없습니다.


공급자가 웹 구성 및 다른 사이트 모음에 제대로 등록되어 있습니다. 그러나 이것은 버그가있었습니다.

한 바와 같이, 마스터 페이지 메뉴의 경우

가 System.Web.HttpException : 'TopNavigationMenuV4'의 DataSourceID 유형의 컨트롤의 ID이어야

<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> 

예외를 throw IHierarchicalDataSource. ID가 'topCrossSiteMap'인 컨트롤을 찾을 수 없습니다. 콘텐츠 데이터베이스를 액세스 할 때

그리고 2 밀리 초 단위로 ULS에

correletion의 ID없이 기록을 요청하기 전에 오류를 다음과 같습니다

PermissionMask 확인에 실패했습니다. , 0x00010000에 대한 한 요청을 0x00000000

액세스가 거부되었습니다. 예외 : System.UnauthorizedAccessException : 액세스가 거부되었습니다. (HRESULT에서 예외 : 0x80070005입니다 (E_ACCESSDENIED)) Microsoft.SharePoint.Library.SPRequestInternalClass.GetWebMetainfo (문자열 bstrUrl)에서
Microsoft.SharePoint.Library.SPRequest.GetWebMetainfo (문자열 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 서버를 다시 시작하려고했습니다. 그러나 도움이되지 않았습니다.

+0

StackOver 커뮤니티에 오신 것을 환영합니다. 더 나은 도움을 줄 수 있도록 코드와 테이블 구조를 제공해 주시겠습니까? – Marek

+0

@Marek 고맙습니다. 나는 너에게 도움이되기를 희망한다. 나는 더 자세한 설명을 추가했다. – Musisimaru

답변

0

해결책을 찾았습니다. 그러나 나는 설명을 찾을 수 없었다. 일부 종 캐싱의 경우 여전히 그렇습니다.


DelegateControl에서 두 ID를 모두 변경하면 페이지가 오류없이로드됩니다.

관련 문제