我正在創建一個HttpModule,它需要知道在MVC應用程序中設置的Thread.CurrentThread.CurrentCulture的值。該值目前由BaseController設置,但是當我的HttpModule.PostRequestHandlerExecute()方法觸發時,它將恢復到文件在頁面呈現之前的狀態。爲什麼Thread.CurrentThread.CurrentCulture頁面呈現和HttpModule.PostRequestHandlerExecute之間有變化?
- Module.PreRequestHandlerExecute:集文化,一個
- 的Page_Load:
我已經通過創建具有這些步驟的簡單Web應用程序重複這種文化是目前A.集文化到B
- 模塊.PostRequestHandlerExecute:當前的線程文化是A.我期望它是B,但它在頁面呈現和PostRequestHandlerExecute之間發生了變化
任何想法爲什麼.Net cha這個價值還是我可以繞過它的?線程是一樣的,所以.NET中的某些東西必須明確地恢復文化。
它*應*更改請求上的所有模塊的區域設置,但它不會。那就是問題所在。請參閱原始問題中的第3步。在頁面呈現和模塊中的請求後觸發之間沒有線程切換。 – 2010-05-21 19:16:21
你的代碼中沒有線程切換,但你不能保證在.Net代碼中。我相信你需要在請求級別設置文化,而不是我的答案解決的線程級別。換句話說,在當前線程上設置或獲取文化不會給你想要的東西。您需要配置整個請求,並且執行該操作的方法是通過重寫手動實現init culture事件。 ... 你明白嗎? – War 2010-05-23 15:10:05