1

我们正在使用 C# 中的 Membership 类成功地将新用户添加到基于表单的身份验证提供程序中。我们能够登录一些公共站点,但是在尝试在人员选择器中搜索新创建的用户后,他没有出现。

似乎我们必须在 WSS_Content_* 数据库中添加一条 UserInfo 记录。所以我们引用了在我们的 Sharepoint 上运行的 people.asmx Web 服务。尝试使用以下方法创建 UserInfo 后,该方法返回未解析的 PrincipalInfo 对象(UserInfoID 为 -1,IsResolved 为 false 等)。

peopleservice.People service = new peopleservice.People();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
string[] users = new string[] { txtCreateEmail.Text };
var result2 = service.ResolvePrincipals(users, brnextranet.SPPrincipalType.User, true);

有没有我们遗漏的步骤?

4

1 回答 1

1

我能够通过创建在 Sharepoint 服务器上运行的 Web 服务来解决该问题。创建 UserInfo 记录需要以下两种方法:

    [WebMethod]
    public void CreateUser(string username)
    {
        SPWeb web = new SPSite(this.ExtranetSite).OpenWeb();

        web.AllUsers.Add(this.MembershipProvider + ":" + username, username, username, "");
        web.EnsureUser(this.MembershipProvider + ":" + username);
    }

    [WebMethod]
    public void DeleteUser(string username)
    {
        SPWeb web = new SPSite(this.ExtranetSite).OpenWeb();

        web.SiteUsers.Remove(this.MembershipProvider + ":" + username);
        web.Update();
    }
于 2010-12-10T06:36:53.250 回答