2010-06-18 2 views
3

프로그래밍 방식으로 (비 사이트 관리자를 사용하여) C#을 사용하여 SharePoint 그룹에 사용자를 추가하려고 시도했습니다. 사이트 관리자로 로그인하면 정상적으로 작동하지만 사이트 관리자가 아닌 사용자로 로그인 한 경우 액세스가 거부됩니다. 몇 가지 조사를 한 후에 나는 사용자 (작동하지 않는 것) 또는 "사용자를 확인"할 필요가 있다는 것을 알아 냈으므로이 코드 (어떤 사람들에게는 효과가 있었다)에서 끝났습니다. 다음 중 어떤 것이 작동하지 않고 여전히 Access is Denied 오류를 내게주는 지 설명하는 데 도움이 될 수 있습니까?프로그래밍 방식으로 SharePoint 그룹에 사용자를 추가하는 방법 - 액세스가 거부되었습니다.

SPSecurity.RunWithElevatedPrivileges(delegate() 

{ 

    using (SPSite site = new SPSite(SPControl.GetContextSite(HttpContext.Current).Url)) //have also tried passing in the ID - doesn't make a difference 

    { 

     using (SPWeb web = site.OpenWeb()) 

     { 

       web.AllowUnsafeUpdates = true; 



       // add user to group 

       SPGroup group = this.Web.Groups[groupList.Items[i].Value]; 

       SPUser spUser = web.EnsureUser(provider + ":" + user.UserName); //provider is previously defined 

       spUser.Email = user.Email; 

       spUser.Name = txtFullName.Text; 

       group.AddUser(spUser); 



       // update 

       group.Update(); 

     } 

    } 

} 
+3

이제 답글로 의견을 제공하고 최대한 빨리 수락하십시오. –

답변

3

알아 냈어! this.Web.Groups 대신 web.Groups ... 올바른 개체를 사용하지 않았습니다.

0

web.AllowUnsafeUpdates = true;을 설정했지만 다시 설정하지 않았습니다.

이와 같은 상황에서 SPWeb이 이미 AllowUnsafeUpdates를 사용하고 있는지 확인하십시오.

bool updates = web.AllowUnsafeUpdates; 
web.AllowUnsafeUpdates = true; 

// do your thing 

web.AllowUnsafeUpdates = updates; 

이렇게하면 SPWeb 개체의 방식대로 다시 설정됩니다. 귀하의 경우에는 finally try 블록에 넣을 것입니다. finally 블록에는 web.AllowUnsafeUpdates = updates;을 설정합니다.

코드에서이 코드를 실행하면 다시 설정하지 않았으므로 아마 true로 설정됩니다. 이 SPWeb 객체의 값이 무엇인지 SharePoint 관리자 나 PowerShell로 확인할 수 있습니다.

관련 문제