Sto creando un HttpModule che deve conoscere il valore di Thread.CurrentThread.CurrentCulture come impostato in un'applicazione MVC. Tale valore è attualmente impostato da BaseController, ma quando viene attivato il metodo HttpModule.PostRequestHandlerExecute(), viene ripristinato ciò che la Cultura era prima del rendering della pagina.Perché Thread.CurrentThread.CurrentCulture Cambia tra il rendering della pagina e HttpModule.PostRequestHandlerExecute?
ho duplicato questo con la creazione di una semplice applicazione web con questi passaggi:
- Module.PreRequestHandlerExecute: Impostare la cultura alla A
- Page Load: La cultura è attualmente A. Set cultura a B
- Module .PostRequestHandlerExecute: la cultura thread corrente è A. mi aspettavo che fosse B, ma è stato cambiato tra il rendering della pagina e PostRequestHandlerExecute
Qualsiasi idea del perché .Net cha questo valore o come posso aggirarlo? Il thread è lo stesso, quindi qualcosa in .Net deve essere esplicitamente ripristinato la cultura.
* * * modifica le impostazioni locali per tutti i moduli della richiesta, ma non lo fa. Questo è il problema. Vedere il passaggio 3 nella domanda originale. Non c'è passaggio tra il rendering della pagina e l'attivazione post-richiesta nel modulo. –
non c'è il cambio di thread nel codice ma non lo si può garantire nel codice .Net. Credo che sia necessario impostare la cultura a livello di richiesta e non il livello di thread che la mia risposta risolve. In altre parole, impostare o ottenere la cultura sul thread corrente non ti darà quello che vuoi. è necessario configurare l'intera richiesta e il modo per farlo è implementare manualmente l'evento di cultura di inizializzazione sovrascrivendo. ... Capisci? – War