2013-07-22 3 views
1

Sitecore에서 항목을 참조하려고합니다. 내 코드에서 MyItem1을 반환합니다. {12345ABC-4784-4869-AD80-D90B07350835}에 대해서는입니다.Sitecore 항목이 Null입니다

"일반 사용자"는 항목을 참조 할 수 있지만 "특수 사용자"는 항목을 참조 할 수 없습니다. 이 권한 문제가 될 수 있습니까?

참고 : "특수 사용자"항목은 마스터 및 웹 데이터베이스 모두에 있습니다.

Dim SCDataItemValue As String = "" 
    Dim ADGroupValue As String = "" 

    If Not Request.QueryString("type") Is Nothing AndAlso Request.QueryString("type").ToString.ToLower.Trim = "special" Then 
     'Get values for Special User. 
     SCDataItemValue = "{12345ABC-4784-4869-AD80-D90B07350835}" 
     ADGroupValue = "GroupAccess_Special" 
    Else 
     'Regular User. 
     SCDataItemValue = "{1911A077-2E41-4CAB-ADAC-1911A077EB62}" 
     ADGroupValue = "GroupAccess" 
    End If 

    Dim scItemID As New Sitecore.Data.ID(SCDataItemValue) 
    Dim MyItem1 As Sitecore.Data.Items.Item = Sitecore.Context.Database.GetItem(scItemID) 
+0

다른 공지 사항이 있습니다. 특정 사용자에 대해 다른 기존 항목의 GUID를 사용하면 MyItem1이 null이 아닙니다. 새 항목을 만들 때 MyItem1은 Null을 반환합니다. 작동하는 기존 항목의 복제본을 만들면 새 복제본이 작동하지 않습니다. – crjunk

답변

4

예는 허가 문제 일 수 있습니다. 해당 사용자에게 항목에 대한 읽기 권한이없는 것일 수 있습니다. 당신이 당신의 항목에 대한 전체 액세스 제어를 할 경우 사용하십시오 :

// The SecurityDisabler overrides the current security model, allowing you 
// to access the item without any security. It's like the user being an administrator 

using (new Sitecore.SecurityModel.SecurityDisabler()) 
     { 
    Dim scItemID As New Sitecore.Data.ID(SCDataItemValue) 
    Dim MyItem1 As Sitecore.Data.Items.Item = Sitecore.Context.Database.GetItem(scItemID) 
     } 

나는 코드는 Visual Basic에서 정확하게 방법을 모르겠어요.

+0

securitydisabler를 사용해 보았지만 여전히 오류가 발생합니다. 또한 SQL 쿼리 창에서 마스터 및 웹 DB 모두에서 ID가 '12345ABC-4784-4869-AD80-D90B07350835'인 항목에서 "* 선택"을 실행했습니다. 두 데이터베이스가 모두 레코드를 반환했습니다. 다른 제안? – crjunk

+2

Sitecore API를 사용하십시오. 직접 데이터베이스를 쿼리하는 것은 큰 실수입니다. –

+0

지금 일하고있는 것 같습니다. 이상한 ... – crjunk

2

아마도 sitecore climber가이 문제를 보안 문제로 여기고 있습니다. 'Access Viewer'(Sitecore> 보안 도구> 액세스 뷰어)를 사용하여 해당 항목에 대한 읽기 권한이 있는지 확인하십시오. 팁 : 액세스 뷰어의 '사용자'청크에서 사용자/역할을 선택하십시오.

+0

익스트라 넷 \ 익명 및 기본 \ 익명 모두 해당 항목에 대한 읽기 권한이 있습니다. "extranet \ Anonymous"가 사이트 코어 컨텍스트 사용자인지 확인하는 코드도 추가했습니다. 계속해서 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 오류. – crjunk

+0

좋아, 마지막으로 한 가지; 항목이 게시 되었습니까? –

+0

예. 항목이 게시되었습니다. ConnectionStrings.config 파일이 수정되어 개발 서버를 가리키고 있다고 밝혀졌습니다. 이것은 왜 새로운 항목이 생성/복제되지 않았는지를 설명합니다. – crjunk