SharePoint MySites URL 충돌
-
18-09-2019 - |
문제
사용자는 이메일 주소를 사용하여 만든 SharePoint 사이트에 로그인하여 사용자 이름이됩니다. 그러나 이것은 Mysites에게 문제가됩니다.
사용자가 Mysite를 생성하면 URL이 URL을 사용하여 사용자 이름의 @ Symbol 다음에 어떤 것을 잘라냅니다. 따라서 사용자 이메일 주소가 user1@test.com 인 경우 Mysite의 URL은 다음과 같습니다.
http://host/personal/user1/
그러나 동일한 이메일 접두사가 있지만 다른 도메인 user1@anotherdomain.com을 가진 다른 사용자 인 경우 문제가 발생합니다. 이 사용자는 MySite URL도 필요합니다
http://host/personal/user1/
사용자가 사이트에 로그인하면이 코드를 사용하여 프로필과 MySite를 만듭니다.
if (!profileManager.UserExists(username))
{
UserProfile profile = profileManager.CreateUserProfile(username);
profile["PreferredName"].Value = fullname!=null?fullname:username;
profile["WorkEmail"].Value = email != null ? email : "";
profile["PersonalSpace"].Value = email;
profile.Commit();
#region create User My Site
using (SPSite site = profile.PersonalSite)
{
if (site == null)
{
try
{
profile.CreatePersonalSite();
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(string.Format("CreateMySite - {0}", ex.Message));
throw ex;
}
}
}
#endregion
}
HttpContext.Current = httpCxt;
사용 된 URL을 제어하기 위해 여기서 할 수있는 일이 있습니까?
-- 편집하다
위의 행동은 이끼의 기본값입니다. 즉, 사용자 이메일 주소를 수동으로 복용하지 않습니다. 이것은 Moss가 자동으로 수행하는 일입니다. URL이 다음과 같아야한다고 말할 수 있다면 선호합니다.
http://host/personal/user1-at-test-dot-com
이메일 주소를 피하고 다음과 같은 개인 공간 가치에 할당하려고했습니다.
string clean = email.Replace("@","-at-");
profile["PersonalSpace"].Value= clean;
....
그러나 이것은 도움이되지 않았습니다.
해결책
이것은 드문 방법입니다. 사용자 이름이 아닌 이메일을 기반으로 사용자가 작성하는 특정 이유가 있습니까? 어쨌든 여기 몇 가지 아이디어가 있습니다.
- 정상 명명 충돌 솔루션 사용, URL user_domain에 도메인을 포함하고,
- 충돌이 발생하는 경우 고유 한 ID user_1, user_2를 만들고 다음을 생성하기 위해 밑줄 후에 어떤 숫자가 있는지 확인하십시오.
편집하다
편집을 기반으로 Moss 자체의 충돌 해상도를 구성 할 수 있습니다. 그래서 URL을 만드는 이상한 방법이라고 말했습니다.
SSP에서 MySite 설정으로 이동하여 사이트 이름 지정 형식 그룹
귀하의 옵션 :
사용자 이름 (충돌 해결되지 않음) 예 : http : // portal_site/location/username/
사용자 이름 (domain_username을 사용하여 충돌 해결) 예 : .../username/또는 .../domain_username/
도메인 및 사용자 이름 (충돌이 없음) 예 : http : // portal_site/location/domain_username/