Estoy creando un HttpModule que necesita conocer el valor de Thread.CurrentThread.CurrentCulture como se establece en una aplicación MVC. Ese valor está siendo establecido actualmente por el BaseController, pero cuando se activa mi método HttpModule.PostRequestHandlerExecute(), se revierte a lo que era Culture antes de la representación de la página.¿Por qué Thread.CurrentThread.CurrentCulture cambia entre Page Rendering y HttpModule.PostRequestHandlerExecute?
Me han duplicado mediante la creación de una aplicación web sencilla con estos pasos:
- Module.PreRequestHandlerExecute: Establecer la cultura a A
- Load: La cultura es actualmente la cultura A. ajustado en B
- Módulo .PostRequestHandlerExecute: la cultura hilo actual es A. yo esperaba que fuera B pero se cambió entre la renderización de páginas y PostRequestHandlerExecute
Cualquier idea de por qué .Net cha nges este valor o cómo podría evitarlo? El hilo es el mismo, por lo que algo en .Net debe revertir explícitamente la cultura.
* Debería * cambiar la configuración regional para todos los módulos en la solicitud, pero no es así. Ese es el problema. Vea el paso 3 en la pregunta original. No hay cambio de hilo entre la representación de la página y la activación posterior a la solicitud en el módulo. –
no hay cambio de subprocesos en su código, pero no puede garantizar eso en el código .Net. Creo que debes establecer la cultura en el nivel de solicitud y no en el nivel de subproceso que resuelve mi respuesta. En otras palabras, establecer u obtener la cultura en el hilo actual no le dará lo que desea. necesita configurar toda la solicitud y la forma de hacerlo es implementar manualmente el evento de cultura init anulando. ... ¿Lo entiendes? – War