Dove Sessions
è un Dictionary<Guid, WebSession>
, e NewSession
è new WebSession()
ho questa linea:NullReferenceException aggiungendo un dizionario - molto certo che nulla è nullo
Sessions.Add(NewSession.SessionID, NewSession);
Ora, a questo punto probabilmente stai a rotazione i tuoi occhi e il pensiero "bene o Sessioni è nullo o NewSession.SessionID è nullo." Tuttavia:
Sessions == null
false
NewSession.SessionID == null
false
NewSession == null
false
È piuttosto intermittente. Succede forse una volta su 50. E ogni volta che succede, posso semplicemente fare Sessions.Add(NewSession.SessionID, NewSession);
nella finestra immediata e funziona bene.
Il costruttore per WebSession
è sincrono e Sessions
è un dizionario vaniglia senza zuccheri aggiunti.
Sono abbastanza sicuro che ho fatto due diligence a questo punto. È una cosa abbastanza innocua da accadere nella mia applicazione ed è intrappolata e gestita in modo pulito - ma sono perplesso su ciò che lo causa in primo luogo.
Edit: mi chiedo se è perché la mia eredita WebSession
: Dictionary<String, Object>
ma il suo costruttore non chiama base()
- che ancora non spiegherebbe, però da quando posso verificare che l'oggetto non è nullo prima di fare Add(..)
possibile duplicato di [Che cos'è una NullReferenceException in .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –
cosa dire di una traccia dello stack? di solito questo svela tutto ... –
Aggiungi alcuni avvisi con i messaggi in modo che il messaggio ti dica esattamente che cosa è stato nullo. – usr