a operação não é válida devido ao estado atual do objeto.(extranet)
-
10-12-2019 - |
Pergunta
Estou usando o seguinte código para representar um usuário em uma extranet que usa Autenticação Baseada em Formulário, no entanto, quando ele vem para esta linha (SPSite s = new SPSite(siteStr, userToken);)
ele lança
InvalidOperationException.
Eu testei e sei 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 + ")";
}
}
});
Solução 2
O problema foi resolvido quando Você adicionar o usuário para o site em configuração do site -> pessoas e grupos
Outras dicas
Você pode tentar o seguinte, eu parava de novo SPSite e SPWeb objeto fora 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 + ")";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange