Existe uma alternativa para SPContext.Current.Web.CurrentUser?
Pergunta
Eu descobri isso SPContext.Current.Web.CurrentUser
realmente não é confiável.Uma em cada dez solicitações desse objeto retorna como null
.
Existe uma alternativa para SPContext.Current.Web.CurrentUser
?
Alguém mais viu essa falta de confiabilidade?
Existe uma solução por aí?
Solução
Seria legal se você postasse o código ofensivo e seus arredores, mas algumas coisas devem ser consideradas:
- Você pode estar obtendo o objeto muito cedo no ciclo de vida (digamos, métodos PreInit e outros, ou um HttpModule etc.)
- Você pode estar quebrando o pipeline fazendo coisas como definir o HttpContext como nulo (já vi isso em soluções alternativas do SharePoint antes)
- Você pode estar atrás de um proxy reverso como Apache ou Nginx deixando seus KeepAlives enlouquecidos, tente testar o código fora do seu ambiente
- E alguns "é o sinal verde" para problemas de hardware, pool de aplicativos atingindo o máximo de RAM ou falta dela, SQL Server ocupado
- Você pode estar usando alguma representação PInvoke que faz com que a autenticação integrada enlouqueça
- Se você estiver usando FBA, as configurações do provedor e a disponibilidade de back-end (AD, arquivo XML, associação SQL) podem estar falhando - mas isso é improvável, pois seria um erro diferente.
- Uma seção HttpModules bagunçada também adora quebrar as coisas. Você já tentou um novo WebApplication sem nenhuma alteração?
- Gosto do número oito, então pensei que deveria dar oito ideias vagas
DR:Poste seu código :)
Outras dicas
Só experimentei isso quando esqueço que estou chamando isso fora de contexto.
você tem certeza de que não está tentando chamar isso de dentro SPSecurity.RunWithElevatedPrivileges()
?
por favor tente com isso ..
SPWeb spWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(System.Web.HttpContext.Current);
SPUser user = spWeb.CurrentUser;
ou
using (SPSite spsite = new SPSite(url))
{
using (SPWeb spweb = spsite.OpenWeb())
{
userObj = spweb.CurrentUser;
}
}
por favor, tente também com RunWithElevatedPreviliges () ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange