Quindi mi chiedo come esattamente asp.net sia in grado di analizzare una proprietà statica, quando (a mia conoscenza) asp.net è multi-thread.In che modo HttpContext.Current funziona in un ambiente con più thread?
- Una teoria sostiene che i tipi di ASP.NET mantengono un appdominio diverso per ogni richiesta ... ma ciò non sembra fattibile.
- Un'altra teoria sostiene che il metodo .Current esamina il thread corrente e quindi lo utilizza per cercare il contesto http in alcuni hashtable (o altri meccanismi di archiviazione statici).
In entrambi i casi, si tratta di una tecnica che sembra davvero utile ... mi piacerebbe utilizzarlo, ma sicuramente non voglio essere il debug bug stato condiviso: -/
impressionante, grazie per questo ... l'istanza statica viene ripulita una volta che il thread muore? –
Importante notare che ThreadStatic non è affidabile in uno scenario di carico elevato. ASP.NET cambia i contesti delle richieste tra i thread e migra HttpContext. Qualsiasi [ThreadStatic] verrà lasciato sul vecchio thread, che sta rilevando una nuova richiesta. –
Interessante domanda ... soprattutto se si tratta di un thread di pool che potrebbe essere riutilizzato ;-p Il mio consiglio: pulire manualmente se si sta facendo questo tipo di cose. –