l'opération n'est pas valide en raison de l'état actuel de l'objet.(extranet)
-
10-12-2019 - |
Question
Je suis à l'aide de code suivant à usurper l'identité d'un utilisateur sur un extranet qui utilise l'Authentification Basée sur des formulaires, cependant quand il s'agit de cette ligne (SPSite s = new SPSite(siteStr, userToken);)
il jette
InvalidOperationException.
J'ai testé et savoir que allUSers[4] existe.
string siteStr = "http://mywebSiteUrl/";
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteStr))
{
using (SPWeb web = site.OpenWeb())
{
SPUserToken userToken = web.AllUsers[4].UserToken;
SPSite s = new SPSite(siteStr, userToken);
SPWeb w = s.OpenWeb();
myLiteral.Text = "Currently logged in as: " + w.CurrentUser.ToString() + "( " + w.CurrentUser.Name + ")";
}
}
});
La solution 2
Le problème est résolu lorsque Vous ajoutez l'utilisateur au site sous paramètres du site -> les personnes et les groupes
Autres conseils
Pouvez-vous essayer la suite, j'ai juste continué à nouveau SPSite et SPWeb l'objet en dehors de RunWithElevatedPrivileges
string siteStr = "http://mywebSiteUrl/";
SPUserToken userToken;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteStr))
{
using (SPWeb web = site.OpenWeb())
{
userToken = web.AllUsers[4].UserToken;
}
}
});
SPSite s = new SPSite(siteStr, userToken);
SPWeb w = s.OpenWeb();
myLiteral.Text = "Currently logged in as: " + w.CurrentUser.ToString() + "( " + w.CurrentUser.Name + ")";
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange