Cercando di utilizzare il nuovo modello asincrono C# 5 è stato sorprendente per me AspNetSynchronizationContext
è una classe interna (così come la base AspNetSynchronizationContextBase
). Così senza documenti. Ma è essenziale sapere cosa fa quando si utilizza la funzione asincrona/attesa nel codice ASP.NET. Ho corretto che garantisce che le vostre continuazioni otterranno lo stesso HttpContext.Current
come chiamanti originali? E 'non garantire che le continuazioni vengano eseguite sullo stesso thread dei chiamanti?AspNetSynchronizationContext
Se quest'ultima ipotesi non è vera e ottengo il thread originale posso essere sicuro di ottenere lo stesso contesto di thread in continuazioni? Intendo principal/culture associate al thread e thread storage locale? Questo è importante perché la localizzazione di ASP.NET si basa sulla cultura dei thread e la mia applicazione si basa sul modello di sicurezza dei ruoli .NET (principale del thread).
Ottima risposta! Esattamente quello che volevo sentire più alcuni link utili. Grazie mille! – UserControl
Suppongo che 'AspNetSynchronizationContext' si comporta in modo un po 'strano quando si tratta di' Thread.CurrentPrincipal': http://stackoverflow.com/a/12030785/463785 sai se questo è l'errore di 'AspNetSynchronizationContext' o alcuni altre cose di livello ASP.NET? – tugberk
Non posso dire per certo. È possibile che il contesto di base .NET ('ExecutionContext') abbia alcune regole speciali per' CurrentPrincipal' (per ragioni di sicurezza) e ASP.NET non può superare questo (ad esempio in uno scenario di fiducia parziale). Ma questa è solo una congettura. –