2009-10-29 14 views
8

हमारे पास एक प्रणाली है जो आईआईएस में चलती है।आईआईएस में एक अनुरोध पर एक अनुरोध होगा?

सिस्टम को हमेशा "संस्कृति" का उपयोग करके चलाना चाहिए, लेकिन हम सर्वर सेटिंग्स को सही सेट करने पर भरोसा नहीं कर सकते हैं।

ऐसा करने का एक तरीका हर बार जब हम ToString करते हैं तो संस्कृति निर्दिष्ट करना है।

हालांकि, हम सोच रहे थे, क्या एक विधि की शुरुआत में संस्कृति को थ्रेड पर सेट करना संभव है और उसी विधि पर चलने वाले सभी कोड पर भरोसा करना संभव है?

उत्तर

2

आप गतिशील संस्कृति बदल सकता हूँ? यदि नहीं, तो आप web.config फ़ाइल में संस्कृति सेट कर सकते हैं।

<system.web> 
    <globalization culture="ja-JP" uiCulture="zh-HK" /> 
</system.web> 

तुम भी पृष्ठ के स्तर पर सेट कर सकते हैं:

<%@Page Culture="fr-FR" Language="C#" %> 

और धागे पर:

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 

लेकिन तुम क्या प्रयोग कर रहे हैं, पेज-स्तर या web.config के लिए स्तर शायद सबसे उपयुक्त लगता है।

3

यदि आप जानते हैं कि आप संस्कृति को सभी धागे के लिए समान रखना चाहते हैं, तो यह एक अच्छा दृष्टिकोण होना चाहिए।

हालांकि, अगर आपको संस्कृति को सेट करने की आवश्यकता है, तो प्रति अनुरोध के आधार पर एक अनुरोध से अलग हो सकता है, जो संभावित विश्वसनीय दृष्टिकोण नहीं हो सकता है। उच्च भार के तहत, हमने कई अनुरोधों के लिए थ्रेड का उपयोग किया है और एक थ्रेड से दूसरे में माइग्रेट किए गए अनुरोध, अपनी संस्कृति (और अन्य थ्रेडस्टैटिक जानकारी) को पीछे छोड़कर।

+0

+1 उत्तर –

+0

के लिए धन्यवाद क्या यह वास्तव में संभव है कि एक विधि ब्लॉक के भीतर, एक धागा परिवर्तन हो? –

18

सं। एएसपी.NET थ्रेड चपलता प्रदर्शित करता है - कुछ स्थितियों में, अनुरोध अपने अनुरोध जीवन चक्र में विशिष्ट बिंदुओं पर एक थ्रेड से दूसरे स्थान पर जा सकता है। (यह "कहीं भी नहीं" है; this blog post अधिक विशिष्ट विवरण देता है।)

दुर्भाग्यवश यह स्पष्ट रूप से दस्तावेज नहीं है जैसा कि यह हो सकता है, और यह उत्तेजित करने के लिए अपेक्षाकृत कठिन है - ताकि आप आसानी से स्थिति में आ सकें जहां परीक्षण के तहत भार, सब ठीक है - लेकिन उत्पादन में चीजें गलत हो जाती हैं।

हालांकि, कुछ tests I ran a while ago (पेज के भीतर "jskeet" के लिए देखो) पता चलता है। कि Thread.CurrentCulture में भी जब धागा चपलता किक संरक्षित है

+0

मुझे आश्चर्य है कि यदि आपके पास वेब बागवानी बंद है तो यह प्रभावित होता है? –

+0

बिल्कुल कोई विचार नहीं, मुझे डर है ... –

+0

+1 उत्तर के लिए धन्यवाद –

1

के रूप में अन्य लोगों ने बताया, ASP.NET अलग धागे में एक ही अनुरोध के कुछ हिस्सों पर कार्रवाई करने का फैसला हो सकता है। हालांकि, आप प्रत्येक विधि की शुरुआत में थ्रेड-स्टेटिक सामग्री को प्रारंभ करने के बारे में बात कर रहे हैं, इसलिए यह प्रतिबंध आपके लिए लागू नहीं होता है: मुझे पूरा यकीन है कि एएसपी.नेट वर्तमान थ्रेड को किसी के मध्य में नहीं बदल सकता आपकी विधियां, इसलिए आपका दृष्टिकोण ठीक होना चाहिए।

+0

+1 उत्तर के लिए धन्यवाद –

संबंधित मुद्दे