Domanda

Stiamo aggiungendo con successo un nuovo utente per i nostri moduli di provider di autenticazione basata su utilizzando la classe Membership in C #. Siamo in grado di effettuare il login alcuni siti pubblici ma dopo aver provato a cercare il nuovo utente creato nel Selezione utenti che non si presenta.

Sembra che dobbiamo aggiungere un record UserInfo nel WSS_Content_ * Database. Così si fa riferimento alle people.asmx servizio Web in esecuzione sul nostro Sharepoint. Dopo aver cercato di creare l'UserInfo utilizzando il seguente metodo, il metodo restituisce un oggetto PrincipalInfo non risolta (UserInfoID è -1, IsResolved è falso, ecc.).

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);

Ci sono dei passi che mancano?

È stato utile?

Soluzione

Sono stato in grado di risolvere il problema creando un servizio Web in esecuzione sul server Sharepoint. I due metodi seguenti sono necessari per creare un record 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();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top