Вопрос

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

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

http://host/personal/user1/

Однако это вызывает проблему, если это другой пользователь с тем же префиксом электронной почты, но с другим доменом, т. е.user1@anotherdomain.com .Этот URL-адрес MySite пользователя также должен быть

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;

....

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top