c# - SharePoint MySites URL 冲突

标签 c# .net sharepoint sharepoint-2007 mysite

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

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

我可以在这里做些什么来控制所使用的 URL 吗?

-- 编辑

上述行为是 MOSS 的默认行为。 IE。我没有手动获取用户的电子邮件地址,这是 MOSS 自动执行的操作。如果我可以说 URL 应该是:

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

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

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

....

但这并没有帮助。

最佳答案

这是一种不常见的做法,是否有任何特定原因是根据电子邮件而不是用户名创建用户的?不管怎样,这里有一些想法。

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

编辑

根据您的编辑,您可以在 moss 本身中配置冲突解决方案,这就是为什么我说这是一种奇怪的创建 url 的方式,

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

您的选择:

关于c# - SharePoint MySites URL 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1866697/

相关文章:

c# - Sharepoint开发部署问题

c# - DotNetZip 检查 zip 文件中是否存在文件夹

c# - 是否可以在 WinForms .Net 的组件设计器中更改组件名称

c# - 嵌套的 linq 查询,如何获得不同的值?

c# - 最佳地比较字符串列表

javascript - SharePoint 获取当前用户帐户名?

c# - TreeView.DrawNode 的问题 - OwnerDrawText

.net - 使用ASCII编码通过WebSphere MQ将消息发送到SWIFT

c# - .NET - System.Collections.Immutable 某处是否有单向链表?

Sharepoint XSL 数据 View 查询字符串过滤