Конфликт 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/