본문 바로가기

기술자료/.NET

사용자 프로퍼티에서 특정 프로퍼티 값 가져오기

사이트내의 사용자 프로퍼티를 가져오는 방법은 아래와 같다.

SPSite curSite = <현재 SPS 사이트를 SPSSite로 돌려주는 무언가 작성>

Microsoft.Office.Server.ServerContext serverContext =  
    Microsoft.Office.Server.ServerContext.GetContext(curSite);

Microsoft.Office.Server.UserProfiles.UserProfileManager mgr =
    new  Microsoft.Office.Server.UserProfiles.UserProfileManager(serverContext);

Microsoft.Office.Server.UserProfiles.UserProfile profile =
    mgr.GetUserProfile(<로그인 사용자 계정>);

// 프로필 내에 부서("Department") 값을 가져옴
string deptName = (string)profile["Department"].Value;

<현재 SPS 사이트를 SPSSite로 돌려주는 무언가 작성> 같은 경우 다양한 방방법으로 가져올 수 있다.   new SPSite("http://<site url>") 과 같은 방법으로 처리하거나 기타 해당하는 사이트의 값을 가져오는 방법을 통해 가져오면 된다.

<로그인 사용자 계정> 이란, 윈도우 인증을 사용하는 경우 <도메인 이름>\<사용자 ID> 가 될 것이고, Form 인증인 경우 <인증 프로바이더 이름>:<사용자 ID>가 된다.
이것은 인증 방법에 따라 달라지므로 알아서 넣는다.

마지막으로 프로필의 값은 프로필 콜랙션 중 [ ] 를 사용해서 가져오면 되는데, 이 때 가급적 Static 이름을 사용하는 것이 좋다. "Department" 같은 경우 Display Name은 "부서" 인데, "부서"로 하는 경우 종종 프로필 속성값을 변경하면 더 이상 찾지 못하는 경우가 발생할 수 있다.

해당 값은 object 타입이므로 적절한 Type으로 캐스팅 해야 한다.