Конфликт URL MySites в SharePoint

Пользователь входит на сайт SharePoint, который мы создали, используя свой адрес электронной почты, и это становится его именем пользователя. Однако это создает проблему для MySites.

Когда пользователь создает на MySite URL-адрес, он вырезает что-либо после символа @ в имени пользователя, поэтому, если адрес электронной почты пользователя - user1@test.com, URL-адрес его личного сайта становится следующим:

http://host/personal/user1/

Однако это создает проблему, если это другой пользователь с таким же префиксом электронной почты, но с другим доменом, например user1@anotherdomain.com. 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. Т.е. я не беру вручную адрес электронной почты пользователя, это то, что MOSS делает автоматически. Я бы предпочел, чтобы я мог сказать, что URL должен быть:

http://host/personal/user1-at-test-dot-com 

Я попытался скрыть адрес электронной почты и присвоить ему значение личного пространства следующим образом:

string clean = email.Replace("@","-at-");
profile["PersonalSpace"].Value= clean;

....

но это не помогло.

1 ответ

Решение

Это необычный способ сделать это, есть ли какая-то конкретная причина, по которой пользователи создаются на основе электронной почты, а не имени пользователя? Во всяком случае, вот несколько идей.

  • Используйте обычные решения конфликтов имен, включите домен в URL user_domain,
  • создайте уникальный идентификатор user_1, user_2, если возникнет конфликт, и проверьте, какой номер стоит после подчеркивания, чтобы сгенерировать следующий.

редактировать

Основываясь на ваших изменениях, вы можете настроить разрешение конфликтов в самом мхе, поэтому я сказал, что это странный способ создания URL,

В вашем SSP, перейдите в настройки MySite, посмотрите группу Формат имен сайтов

Ваши варианты:

  • Имя пользователя (не разрешать конфликты) Пример: http://portal_site/location/username/

  • Имя пользователя (разрешение конфликтов с помощью имени_домена) Пример: .../ имя пользователя / или... / имя_пользователя /

  • Домен и имя пользователя (не будет конфликтов) Пример: http://portal_site/location/domain_username/

Другие вопросы по тегам