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?

È stato utile?

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:

    .
  1. Potresti ottenere l'oggetto troppo presto nel ciclo di vita (ad esempio metodi di preinit e tali o un httpmodule ecc.)
  2. Potresti rompere la pipeline facendo cose come impostare il httpContext su null (l'ho visto in SharePoint Workarounds prima)
  3. 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
  4. E alcuni "è la luce verde" per problemi hardware, pool App che raggiunge la RAM di Maxium o la mancanza di esso, SQL Server BUSH
  5. Potresti usare alcune impersonazioni Pinvoke che rende l'autenticazione integrata vai banane
  6. 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.
  7. Una sezione casellata intorno a HTTPModules ama rompere le cose, hai provato in una nuova webapplicazione con cambi zero?
  8. 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 () ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top