1

C# のメンバーシップ クラスを使用して、フォーム ベースの認証プロバイダーに新しいユーザーを正常に追加しています。いくつかの公開サイトにログインできますが、ユーザー ピッカーで新しく作成されたユーザーを検索しようとした後、そのユーザーは表示されません。

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 Server で実行する Web サービスを作成することで、この問題を解決できました。UserInfo レコードを作成するには、次の 2 つの方法が必要です。

    [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 に答える