SharePoint MySites URL冲突

时间:2009-12-08 12:39:44

标签: c# .net sharepoint sharepoint-2007 mysite

用户登录我们使用其电子邮件地址创建的SharePoint网站,这将成为他们的用户名。但是这会给MySites带来问题。

当用户创建一个MySite时,它会删除用户名中@符号后的任何内容,因此,如果用户的电子邮件地址为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;

我可以在这做些什么来控制使用的网址吗?

- 编辑

以上行为是MOSS的默认行为。即我不是手动接收用户的电子邮件地址,这是MOSS自动执行的操作。如果我可以说URL应该是:

,我更喜欢它
http://host/personal/user1-at-test-dot-com 

我已尝试转发电子邮件地址并将其分配给个人空间值,如下所示:

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

....

但这没有帮助。

1 个答案:

答案 0 :(得分:4)

这是一种不常见的方式,有没有特定的原因根据电子邮件而不是用户名创建用户?无论如何,这里有一些想法。

  • 使用常规命名冲突解决方案,在url user_domain中包含域
  • 如果发生冲突,则创建唯一的Id user_1,user_2,并检查下划线后面的数字以生成下一个。

修改

根据您的编辑,您可以在moss中配置冲突解决方案,这就是我说这是创建网址的一种奇怪方式的原因,

在您的SSP中,转到“我的网站设置”,查看网站命名格式

您的选择: