문제

사용자는 이메일 주소를 사용하여 만든 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 설정으로 이동하여 사이트 이름 지정 형식 그룹

귀하의 옵션 :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top