2011-08-08 20 views
6

में सत्र प्रबंधन बस एएसपी .NET के भीतर सत्र प्रबंधन के बारे में एक सवाल था। मैंने आईआईएस (इनप्रोक, स्टेटसेवर और एसक्यूएल सर्वर) के भीतर 3 विकल्पों को देखा है और कई सर्वरों और कई वेब अनुप्रयोगों में सत्र दृढ़ता को तैनात करने में समस्याएं हैं। क्या सत्र में अन्य उप-डोमेन (उसी माता-पिता से) के साथ-साथ प्रत्येक डोमेन के अंतर्गत कई वेब अनुप्रयोगों को प्रबंधित करने के लिए कोई अन्य विकल्प उपलब्ध है?एएसपी .NET

मैं आपको एक उदाहरण दूंगा: एक साइट www.thisismysite.com.au की कल्पना करें। जब मैं लॉग इन करता हूं, तो मैं login.thisismysite.com.au पर जाता हूं। हालांकि साइट ब्राउज़ करना, मैं www.thisismysite.com.au/MyWebApp/ पर जाता हूं। मैं जो हासिल करने की कोशिश कर रहा हूं वह सत्र के लिए सभी तीन लिंकों पर बने रहने के लिए है। मुझे एक तीसरे पक्ष के उपकरण के बारे में पता है जो यह कर सकता है, गले सत्रफर्म, लेकिन क्या सोच रहा हूं कि वहां कोई अन्य लोग हैं या नहीं? इसके अलावा, एसएसएल/गैर एसएसएल का मिश्रण है यदि इससे कोई फर्क पड़ता है।

नोट: मैं पहचान के बारे में चिंतित नहीं हूं, मैं विंडोज पहचान फाउंडेशन (या जैसा) लागू कर सकता हूं और तीनों स्थानों पर दावों को भेज सकता हूं। मैं सत्र दृढ़ता के बाद हूँ।

धन्यवाद ढेर, ली

संपादित करें: मुझे लगता है कि हम अपने उद्देश्यों के लिए अनुकूलित कर सकता है कोड का एक तीसरे पक्ष के टुकड़े के साथ जा रहा समाप्त हो गया। पूरी तरह से काम करता है, और स्रोत कोड खरीदने में हम इसे अपडेट कर सकते हैं जैसा हमें चाहिए।

उत्तर

0

लगता है कि आप क्या चाहते हैं जैसे कैशिंग वितरित किया जाता है? Distributed Cache/Session Solution for ASP.NET Web App

मैं थोड़ा क्षेत्र के लिए नया हूँ, लेकिन मेरे वर्तमान MVC/एएसपी में सत्र स्थिति के लिए Microsoft Azure के AppFabric कैशिंग के प्रयोग पर काम कर रहा हूँ -

इस पोस्ट देखने के लिए पर आप कुछ विकल्प दे सकता है। नेट प्रोजेक्ट क्योंकि एज़ूर वेब ऐप्स स्वाभाविक रूप से सत्र राज्य के लिए अच्छे विकल्प प्रदान नहीं करते हैं।

मेरा मानना ​​है कि ऊपर उल्लिखित पद में दिए गए लिंक Azure के AppFabric कैशिंग के समान हैं और सत्र स्थिति को भी संभाल सकते हैं। मैंने उनमें से किसी के साथ काम नहीं किया है, हालांकि, विश्वसनीयता के लिए प्रतिबद्ध नहीं हो सकता है। इस सप्ताह के अंत में अपने स्वयं के ऐप में बस इस पहलू पर शुरुआत करना।

ग्रेग

+0

मैं Azure के AppFabric पर और से देखा है कि मैं क्या बता सकते हैं यह जिसका मतलब है कि मैं अलग वेब अनुप्रयोगों (या तो उप डोमेन या अधिक शेयर सत्र नहीं कर सकते एक StateServer का एक बड़ा संस्करण, की तरह काम करता उप आवेदन)। यह हालांकि कई सर्वरों पर एक ही साइट/एप्लिकेशन के लिए काम करेगा। – lkoutzas

0

एक विकल्प एसक्यूएल सर्वर के माध्यम से सत्र स्थिति का प्रबंधन करने के लिए है, या आप कुछ पर गौर तरह NCache कई सर्वरों के पार राज्य का प्रबंधन कर सकते हैं।

+0

हाँ, लेकिन यह एकाधिक अनुप्रयोगों (उप वेब ऐप्स या उप डोमेन) के साथ काम नहीं करता है – lkoutzas

0

राज्य सर्वर या SQL सर्वर काम करना चाहिए। कम से कम http के लिए। Https अनुरोध शायद एक ही आईपी पर समाप्त करने की जरूरत है ... इसके बारे में निश्चित नहीं है।

आप हार्डवेयर लोड बैलेंसर/स्विच का भी उपयोग कर सकते हैं जो सत्र बनाए रखता है। वे उपयोगकर्ता से सर्वर पर प्रारंभिक अनुरोध भेजते हैं, और उस उपयोगकर्ता के अगले अनुरोध हमेशा एक ही सर्वर पर भेजे जाते हैं। (या वे कोशिश करते हैं)

यह केवल एक वेब ऐप के लिए सत्र साझा करने के लिए है, लेकिन मेरे काम पर जो कुछ भी करता है, उसके बीच सत्र साझा करने के लिए क्लासिक एएसपी सत्र (विरासत समर्थन के लिए, लेकिन एएसपीनेट भी मान्य है), जब उपयोगकर्ता लॉग इन करता है, तो वे एएसपी पर बनाए जाते हैं, और उन्हें session.asp नामक फ़ाइल से पढ़ा जाता है (नाम कोई फर्क नहीं पड़ता) कि फ़ाइल वेब अनुरोध करने पर .NET से कॉल किए जाने पर मान देता है।

उदाहरण के लिए: session.asp? Session_name = उपयोगकर्ता नाम किसी स्थानीय .net ऐप से कॉल किया जाता है और "जॉन" का जवाब देता है, "जॉन" सत्र ["सत्र_नाम"] और session.asp (या aspx, php या जो कुछ भी आप चाहते हैं) प्रतिक्रिया में पाठ लिखता है।

मुझे यकीन नहीं है कि यह स्पष्ट रूप से समझाया गया है ... यह करने का एक गंदा और आसान तरीका है। मेरी कंपनी में हम इसे लगभग 300 समवर्ती उपयोगकर्ताओं के लिए उपयोग करते हैं जिनमें प्रत्येक सत्र में कई सत्र होते हैं, और यह बहुत अच्छी तरह से काम करता है। आशा करता हूँ की ये काम करेगा। ;-)

-1

सत्र के बजाए कैश का उपयोग करके एकाधिक वेबप्लिकेशंस को संभालने के लिए सीधे आगे बढ़ने का एक तरीका।

उस स्थिति में कैश कुंजी उपयोगकर्ता आईडी और उपयोगकर्ता स्थान आईपी का संयोजन होगा। के बाद से कैश कभी नहीं डिफ़ॉल्ट रूप से समाप्त हो गई हो तो आप कैश की अवधि के साथ बारे में पता होना चाहिए

int timeout=20; 
string key= userid+System.Web.HttpContext.CurrentRequest.ServerVariables("REMOTE_ADDR"); 

//Set 
Cache.Insert(key, value, null, DateTime.Now.AddMinutes(timeout), Cache.NoSlidingExpiration);  

//Get 
var value=Cache[key]; 

लॉगआउट के दौरान कैश एसक्यूएल सर्वर में

Cache.Remove(key); 
1

राज्य सर्वर या भंडारण दूर करने के लिए क्या करने के लिए ठीक से काम करना चाहिए भूल नहीं है आप ऐसा करने की कोशिश कर रहे हैं - यहां तक ​​कि कई ऐप्स में भी, लेकिन आपको याद रखना चाहिए कि सभी एप्लिकेशनों में एक ही मशीनकी होना चाहिए।

ASPNET-load-balancing-and-ASPNET-state-server

HTH

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