質問

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

wss_content_*データベースにuserinfoレコードを追加する必要があるようです。そこで、SharePointで実行されているPeople.asmx Webサービスを参照しました。次のメソッドを使用してuserInfoを作成しようとした後、メソッドは解決されていないプリンシパルインフーオブジェクトを返します(userinInfoidは-1、isResolved is 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);

欠落しているステップはありますか?

役に立ちましたか?

解決

SharePointサーバーで実行されている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();
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top