C'è un'alternativa a spontext.current.web.currentuser?
Domanda
Ho trovato che SPContext.Current.Web.CurrentUser
è davvero inaffidabile.Una su dieci richiede che l'oggetto ritorna come null
.
C'è un'alternativa al SPContext.Current.Web.CurrentUser
?
ha chiunque altro abbia visto questo inaffidabilità?
C'è una correzione là fuori?
Soluzione
Sarebbe bello se hai postato il codice offensivo e i suoi dintorni, ma alcune cose da considerare fuori dalla parte superiore della mia testa:
- .
- Potresti ottenere l'oggetto troppo presto nel ciclo di vita (ad esempio metodi di preinit e tali o un httpmodule ecc.)
- Potresti rompere la pipeline facendo cose come impostare il httpContext su null (l'ho visto in SharePoint Workarounds prima)
- Potresti essere dietro un proxy inversa come Apache o NginX che rendono i tuoi keepalivi impazzire, prova a testare il codice fuori dal tuo ambiente
- E alcuni "è la luce verde" per problemi hardware, pool App che raggiunge la RAM di Maxium o la mancanza di esso, SQL Server BUSH
- Potresti usare alcune impersonazioni Pinvoke che rende l'autenticazione integrata vai banane
- Se si utilizza FBA le impostazioni del provider e la disponibilità del backend (file AD, XML, l'abbonamento SQL) potrebbe non riuscire, ma questo è improbabile che sia un errore diverso.
- Una sezione casellata intorno a HTTPModules ama rompere le cose, hai provato in una nuova webapplicazione con cambi zero?
- Mi piace il numero otto, quindi ho pensato che dovrei dargli otto idee vaghe
TL; DR: pubblica il tuo codice :)
Altri suggerimenti
L'ho sperimentato solo quando dimentico che lo sto chiamando fuori dal contesto.
Sei sicuro di non provare a chiamarlo in SPSecurity.RunWithElevatedPrivileges()
?
Plz prova con questo ..
SPWeb spWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(System.Web.HttpContext.Current);
SPUser user = spWeb.CurrentUser;
.
o
using (SPSite spsite = new SPSite(url))
{
using (SPWeb spweb = spsite.OpenWeb())
{
userObj = spweb.CurrentUser;
}
}
.
PLZ Prova anche con RunwithelevatedPreviliges () ...