В EventReceiver я называю этот метод GetPernNr по пункту Добавлено:[SharePoint 2010] Значение из профиля пользователя настраиваемого поля возвращает Null
public override void ItemAdded(SPItemEventProperties properties)
{
SPSite site = properties.Web.Site;
using (SPWeb currentWeb = site.OpenWeb(properties.Web.ID))
{
.....
perNr = UserProfileUtils.GetPernNr(currentWeb, assignedTo.ToString());
.....
}
}
где assignedTo является SPUser.
public static string GetPernNr(SPWeb web, string accountName)
{
string perNr = string.Empty;
UserProfile upUser = null;
try
{
PermissionSet ps = new PermissionSet(System.Security.Permissions.PermissionState.Unrestricted);
ps.Assert();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite siteColl = new SPSite(web.Site.ID))
{
SPServiceContext serviceContext = SPServiceContext.GetContext(siteColl);
UserProfileManager upm = new UserProfileManager(serviceContext);
if (upm.UserExists(accountName))
{
upUser = upm.GetUserProfile(accountName);
if (upUser["PersonNumber"] != null)
{
perNr = upUser["PersonNumber"].Value.ToString();
}
}
}
});
}
catch (Exception ex)
{
..
}
finally { System.Security.CodeAccessPermission.RevertAssert(); }
return perNr;
}
Это странно, этот код работает, когда я пытаюсь получить значение из поля по умолчанию в UserProfile (Office, Manager, и т.д.). А также работает, когда я вызываю этот метод вне EventReceiver, но в моем случае upUser["PersonNumber"].Value
возвращает null. Любая помощь будет очень благодарна
благодаря его работал. вы спасли мое время. –
Спасибо. Теперь это работает. – Fulga