मैं एक HttpModule बना रहा हूं जिसे एक एमवीसी अनुप्रयोग में सेट के रूप में Thread.CurrentThread.CurrentCulture के मान को जानने की आवश्यकता है। वह मान वर्तमान में बेसकंट्रोलर द्वारा सेट किया जा रहा है, लेकिन जब मेरा HttpModule.PostRequestHandlerExecute() विधि आग लगती है, तो यह पृष्ठ प्रतिपादन से पहले संस्कृति के प्रति बदल जाती है। एक पेज रेंडरिंग और HttpModule.PostRequestHandlerExecute के बीच Thread.CurrentThread.CurrentCulture परिवर्तन क्यों करता है?
- Module.PreRequestHandlerExecute:
मैं इन चरणों के साथ एक सरल वेब अनुप्रयोग बनाने के द्वारा इस दोहराया गया है संस्कृति वर्तमान में ए सेट संस्कृति बी को
- मॉड्यूल है .PostRequestHandlerExecute: वर्तमान धागा संस्कृति ए मैं इसे बी होने की उम्मीद है, लेकिन यह पृष्ठ प्रतिपादन और PostRequestHandlerExecute
किसी भी विचार क्यों नेट चा के बीच बदल गया था इस मूल्य को nges या मैं इसके आसपास कैसे मिल सकता है? धागा वही है, इसलिए नेट में कुछ स्पष्ट रूप से संस्कृति को वापस लेना चाहिए।
यह * अनुरोध पर सभी मॉड्यूल के लिए लोकेल को बदलना चाहिए, लेकिन ऐसा नहीं है। यही समस्या है। मूल प्रश्न में चरण 3 देखें। पृष्ठ प्रतिपादन और मॉड्यूल में पोस्ट-अनुरोध फायरिंग के बीच कोई थ्रेड स्विचिंग नहीं है। –
आपके कोड में कोई थ्रेड स्विचिंग नहीं है लेकिन आप .Net कोड में इसकी गारंटी नहीं दे सकते। मेरा मानना है कि आपको अनुरोध स्तर पर संस्कृति को स्थापित करने की आवश्यकता है, न कि थ्रेड स्तर जो मेरा उत्तर हल करता है। दूसरे शब्दों में, वर्तमान धागे पर संस्कृति को स्थापित करना या प्राप्त करना आपको वह नहीं देगा जो आप चाहते हैं। आपको पूरे अनुरोध को कॉन्फ़िगर करने की आवश्यकता है और ऐसा करने का तरीका मैन्युअल रूप से ओवरराइड करके इनिट संस्कृति ईवेंट को कार्यान्वित करना है। ... क्या आप समझे? – War