Конфликт URL-адресов MySites SharePoint
-
18-09-2019 - |
Вопрос
Пользователь входит на сайт 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/