문제

WSS 3.0 개체 모델을 통해 Sharepoint의 사용자 사진에서 사용자를 검색하려고 합니다.해결 방법을 찾기 위해 웹을 탐색했지만 지금까지 방법을 찾지 못했습니다.가능합니까? 그렇다면 어떻게 됩니까?

도움이 되었습니까?

해결책

다음은 작업을 완료하는 데 도움이 되는 코드 조각입니다.예외를 피하기 위해 몇 가지 추가 유효성 검사를 수행해야 할 수도 있습니다(프로필이 실제로 존재하는지 확인, 이미지 URL이 실제로 존재하는지 확인 등).

    //get current profile manager
    UserProfileManager objUserProfileManager = new UserProfileManager(PortalContext.Current);
    //get current users profile
    UserProfile profile = objUserProfileManager.GetUserProfile(true);
    //get user image URL
    string imageUrl = (string)profile[PropertyConstants.PictureUrl];

    //do something here with imageUrl

다른 팁

MOSS가 아닌 WSS 3.0에 대해 엄격하게 이야기하는 경우 실제로 전역 사용자 프로필 자체는 없지만 각 사이트 모음에 숨겨진 사용자 정보 목록이 있습니다.이는 Microsoft.Office.Server 네임스페이스의 어떤 항목도 사용할 수 없음을 의미합니다.

그러나 사용자 사진의 URL을 알고 있는 한 프로그래밍 방식으로 사용자 정보 목록을 업데이트할 수 있습니다.일종의 상승된 권한을 사용하여 실행하는 한 다음을 수행할 수 있어야 합니다. 이 목록을 조작하다 다른 SharePoint 목록과 마찬가지로 할 수 있습니다.이 목록은 사이트 모음 범위에만 적합하므로 사용자는 실제로 사진 URL을 얻으려면 모든 곳에서 동일한 업데이트를 수행해야 합니다.또한 사용자는 누군가 사용자에게 일종의 권한을 할당할 때까지 사용자 정보 목록에 포함되지 않으므로 도메인의 모든 사용자가 해당 목록에 포함되는 것은 아닙니다.

이를 처리하는 깔끔한 방법은 확실히 사용자 프로필 메커니즘이 MOSS이지만 이것이 옵션인 경우 MOSS와 WSS에 대해 질문하도록 질문을 실제로 업데이트해야 합니다.

아, UserProfileManager 클래스를 이용하셔야 합니다.자세한 내용은 여기를 참조하세요: http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

사용 예:

public override void ItemAdded(SPItemEventProperties properties)
{
    // Get list item on which the event occurred.
    SPListItem item = properties.ListItem;

    // Set the Author Image field to the user's PictureURL if it exists.
    using (SPWeb web = properties.OpenWeb())
    {
        // Author: {C32DB804-FF2D-4656-A38A-B0394BA5C931}
        SPFieldUserValue authorValue = new SPFieldUserValue(properties.OpenWeb(), item[new Guid("{C32DB804-FF2D-4656-A38A-B0394BA5C931}")].ToString());

        UserProfileManager profileManager = new UserProfileManager(ServerContext.GetContext(web.Site));
        UserProfile profile = profileManager.GetUserProfile(authorValue.LookupId);
        UserProfileValueCollection values = profile[PropertyConstants.PictureUrl];

        if (values.Count > 0)
        {
            // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
            SPFieldUrlValue urlValue = new SPFieldUrlValue(values.Value.ToString());
            item[new Guid("{37A5CA4C-7621-44d7-BF3B-583F742CE52F}")] = urlValue.Url;
        }
    }

    item.Update();

    // News Text: {7F55A8F0-4555-46BC-B24C-222240B862AF}
    //

    // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
    // 

    // Publish Date: {45E84B8B-E161-46C6-AD51-27A42E4992B5}
    //
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top