लोड-संतुलित IIS 7.5 वेब सर्वर ASP.NET सत्र स्थिति समस्या


14

हमारे पास ASP.NET वेबसाइट के साथ एक समस्या है जहाँ उपयोगकर्ताओं के सत्र अजीब तरह से व्यवहार कर रहे हैं - सत्र डेटा दिखाई दे रहा है, गायब हो रहा है और फिर से दिखाई दे रहा है।

मुझे लगता है कि मुझे पता है कि समस्या क्या है:

  1. हमारा सेटअप 2 x लोड संतुलित है WebServers + एकल सत्र राज्य डेटाबेस।
  2. ASP.NET SQL सत्र स्थिति संग्रहण, IIS वेबसाइट इंस्टेंस आईडी (मेटाबेस आईडी) पर निर्भर करता है ताकि आने वाले सत्र कुकी आईडी की विशिष्ट पहचान की जा सके और मानों को पुनः प्राप्त किया जा सके।
  3. वेबसाइट का IIS वेबसाइट इंस्टेंस आईडी प्रत्येक लाइव सर्वर (ID / W3SVC / 1 / Root on WebServer A, ID / W3SVC / 2 / Root on Webserver B) पर अलग-अलग है।
  4. लोड बैलेंसिंग क्लाइंट आत्मीयता का उपयोग नहीं कर रहा है, ताकि प्रत्येक उपयोगकर्ता HTTP अनुरोध या तो सर्वर पर जा सके।

इसलिए, जैसा कि उपयोगकर्ता साइट पर लॉग इन करता है और इधर-उधर जाता है, प्रत्येक HTTP कॉल या तो वेब सर्वर पर जा सकती है, और इसलिए सर्वर के आधार पर अलग-अलग आईडी के साथ एक सत्र राज्य रिकॉर्ड का उपयोग करें। वास्तव में उपयोगकर्ता के पास एक साथ 2 अलग सत्र उदाहरण होंगे। मेरा मानना ​​है कि मैंने इसे डेटाबेस ASPStateTempSession तालिका में सत्यापित किया है , प्रत्येक सत्र कुकी आईडी लगभग 2 - पहचाने जाने वाले रिकॉर्ड के अनुरूप लगती है (उनकी आईडी केवल पिछले कुछ वर्णों से भिन्न होती है, जो मेरा मानना ​​है कि AppID से AppID पर आधारित एक संशोधक है AspStateTempApplications तालिका) एक दूसरे के सेकंड के भीतर बनाई गई।

इसलिए सत्र राज्य दुर्व्यवहार करता दिखाई देगा क्योंकि एक सत्र रिकॉर्ड में किए गए परिवर्तन केवल उस वेब सर्वर के खिलाफ बने रहेंगे। यदि उपयोगकर्ता अन्य लोड-संतुलित सर्वर पर जाता है, तो सत्र मान गायब या वापस आ जाएगा।

मेरा मानना ​​है कि समाधान साइटों की आईआईएस इंस्टेंस आईडी (जैसे उन्हें दोनों / W3SVC / 1 / रूट बनाते हैं) को सिंक्रनाइज़ करने के लिए है , लेकिन मैंने उन्नत सेटिंग्स के तहत IIS में उस मूल्य को संपादित करने की कोशिश की, और हालांकि यह ठीक बचा, यह सिर्फ बना। साइट उस सर्वर पर 404s लौटाती है जब तक कि मैंने इसे वापस नहीं बदल दिया।

मुझे इस समस्या के लिए एक VBS स्क्रिप्ट मिली लेकिन यह IIS 6 के लिए ही लगती है इसलिए मैं इसे आज़माने के लिए चिंतित हूं। क्या किसी और ने IIS 7.5 पर इस स्थिति का सामना किया है, और आपने इसे कैसे ठीक किया?


संपादित करें / समाधान

मेरी गलती यह थी कि मैं IIS में साइट इंस्टेंस आईडी बदलने के बाद IIS को फिर से शुरू करना भूल गया। इसके बाद, आईडी को अपडेट किया गया और ASP.NET सत्रों को दो वेब सर्वर पर सिंक किया गया।

पूर्ण निर्देश:

  1. सर्वर LIVE1 पर दूरस्थ डेस्कटॉप, IIS Mgr खोलें, समस्या साइट पर क्लिक करें और साइडबार में उन्नत सेटिंग्स चुनें ।
  2. आईडी को कुछ अद्वितीय जैसे 10 में बदलें। ठीक पर क्लिक करें।
  3. वेब सेवा को पुनरारंभ करें ( c:\windows\system32\iisreset /restart)

LIVE2 के लिए भी ऐसा ही करें (सुनिश्चित करें कि साइट आईडी LIVE1 पर समान हो)

ध्यान दें कि साइट आईडी साइट फ़ाइलों के स्थान को प्रभावित करती है उदाहरण के लिए लॉग फ़ाइल फ़ोल्डर बन जाएगा C:\inetpub\logs\LogFiles\W3SVC10

ध्यान दें कि आप प्रत्येक सर्वर पर IIS कॉन्फ़िग फ़ाइल में साइट आईडी विशेषता को संपादित करके इन परिवर्तनों को मैन्युअल रूप से कर सकते हैं C:\Windows\System32\inetsrv\config\applicationHost.config:। व्यवस्थापक निजी की आवश्यकता है और अभी भी बाद में एक रीसेट की आवश्यकता है।

जवाबों:


11

आपके प्रश्न को देखते हुए ऐसा लगता है कि आपके पास एक केंद्रीय सत्र राज्य सर्वर (DB?) है जो सत्र डेटा का ट्रैक रखता है?

आपको उस मशीन कुंजी को भी सिंक्रनाइज़ करना होगा जो कि किसी भी रूप प्रमाणीकरण आदि के लिए एन्क्रिप्शन के लिए उपयोग की जाती है। यह सत्र पहचान को भी प्रभावित कर सकता है, मुझे यकीन नहीं है।

IIS 7 में मशीन कुंजी कॉन्फ़िगर करना

इसके अलावा, आपको मशीनों के बीच साझा कॉन्फ़िगरेशन का उपयोग करना चाहिए, यह अलग मशीन कुंजी के साथ समस्या को ठीक कर सकता है।

IIS कॉन्फ़िगरेशन वेब सर्वर फ़ार्म के लिए सिंक्रनाइज़ेशन?

संपादित करें: जब आपने साइट आईडी बदली, तो क्या आपने IIS प्रबंधक को यह देखने के लिए पुनः आरंभ करने का प्रयास किया था कि क्या वेबरोट बदल गया है? हो सकता है कि कॉन्फ़िगरेशन आईडी से जुड़ा हो, जिसका अर्थ है कि आईडी में परिवर्तन भी दस्तावेज़ रूट आदि जैसे सामान को संशोधित करता है


विचारों के लिए धन्यवाद Jishi लेकिन मैंने पहले ही मशीन को सिंक कर दिया था web.configs में। मुझे लगता है कि मैं वास्तव में वेब सर्वर पर साइटों को पूरी तरह से हटाने और पुन: कॉन्फ़िगर करने के बिना किसी साइट की आईआईएस इंस्टेंस आईडी को बदलने का एक तरीका देख रहा हूं।
जेम्स मैककॉर्मैक

जब आपने साइट आईडी बदली, तो क्या आपने IIS प्रबंधक को पुनः आरंभ करने का प्रयास किया था, यह देखने के लिए कि क्या वेबरोट बदल गया है? हो सकता है कि कॉन्फ़िगरेशन ID से जुड़ा हुआ हो, जिसका अर्थ है कि ID में परिवर्तन भी दस्तावेज़ रूट आदि जैसे सामान को संशोधित करता है
jishi

1
हाँ, यह बात थी! मैं IIS सेवा (कमांड लाइन iisreset / पुनरारंभ) को पुनरारंभ करना भूल गया। उसके बाद ठीक काम किया! कृपया इस जानकारी के साथ आपको उत्तर देने के लिए अपडेट करें और मैं आपको स्वीकृत उत्तर दूंगा।
जेम्स मैककॉर्मैक

सौदा किया। इसे आपके लिए तैयार करने में खुशी हुई।
जिशी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.