2011-08-19 8 views
5

मेरे पास लाइन है:एसक्यूएल सर्वर पर सेट करते समय सत्र टाइमआउट क्यों काम नहीं कर रहा है?

<sessionState mode="SQLServer" sqlConnectionString="Data Source=localhost;User Id=sa;Password=test;" timeout="1" /> 

जो सत्र को SQL सर्वर सर्वर में संग्रहीत करता है। हालांकि यह एक मिनट के बाद ठीक से समय समाप्ति नहीं करता है।

जब मैं इनप्रोक मोड का उपयोग करने के लिए लाइन बदलता हूं:

<sessionState mode="InProc" sqlConnectionString="Data Source=localhost;User Id=sa;Password=test;" timeout="1" /> 

यह एक मिनट के बाद टाइमआउट करता है।

कोई विचार यह क्यों हो रहा है? SqlServer का उपयोग करते समय मैं इसे समय-समय पर कैसे प्राप्त कर सकता हूं?

उत्तर

6

यदि आप SQL सर्वर एक्सप्रेस का उपयोग कर रहे हैं, तो ऐसा इसलिए है क्योंकि DeleteExpiredSessions प्रक्रिया निष्पादित करने के लिए कोई SQL सर्वर एजेंट नहीं है।

संग्रहीत प्रक्रिया है कि सत्र अद्यतन करता है में, मैं संग्रहीत प्रक्रिया (मुझे याद नहीं आ अद्यतन सत्र के लिए DeleteExpiredSessions प्रक्रिया से SQL जोड़ लिया है:

यहाँ समस्या के लिए एक संभावित समाधान है नाम) तो यह पुराने सत्रों की जांच करता है, पुराने सत्र को हटा देता है, और फिर वर्तमान सत्र अपडेट करता है। संग्रहीत प्रक्रिया जो प्रत्येक क्लिक पर सत्र को अद्यतन करती है, इसलिए मैंने सत्र सत्र से पहले पुराने सत्रों को निकालने वाली दो और पंक्तियां जोड़ दीं। यह ठीक काम करता प्रतीत होता है।

1

आप रूपों प्रमाणीकरण कुकी की समय-समाप्ति सेट द्वारा सत्र के समय समाप्ति नियंत्रित करने में सक्षम हो सकता है:

FormsAuthenticationTicket authTicket = 
new FormsAuthenticationTicket(1, // version 
txtUserName.Text, 
DateTime.Now, 
DateTime.Now.AddMinutes(1), 
false,@"\"); 

इस तरह उपयोगकर्ता 1 मिनट के बाद सत्र के साथ संपर्क खो देता है।

+0

फॉर्म प्रमाणीकरण टाइमआउट और सत्र टाइमआउट दो अलग-अलग चीजें हैं। – KingOfHypocrites

6
  1. यकीन है कि SQL सर्वर एजेंट सेवा

    चल रहा है
  2. राइट-क्लिक करें ASPState_Job_DeleteExpiredSessions नामित SQL सर्वर एजेंट काम पर और "इतिहास देखें" क्लिक करें - सुनिश्चित करें कि इस काम को सफलतापूर्वक हर 1 चल रहा है मिनट।

मेरे मामले में, किसी भी तरह (शायद कई उदाहरण नामित शामिल किए जाने की एक के दौरान) मेरी एसक्यूएल सर्वर एजेंट सिर्फ सर्वर का नाम और न Servername \ InstanceName करने के लिए अपनी संपत्ति Connection -> Alias Localhost Server सेट था।

जब यह परिवर्तन हुआ, ASPState_Job_DeleteExpiredSessions अनिश्चित काल तक चलने लगा और इसे रोका नहीं जा सका। इसलिए, मैंने SQL सर्वर एजेंट सेवा को फिर से शुरू करने का प्रयास किया, लेकिन यह बैक अप शुरू नहीं होगा। हालांकि, एक बार जब मैंने Connection -> Alias Localhost Server संपत्ति को servername \ instancename में बदल दिया, तो SQL सर्वर एजेंट ने ठीक बैक अप शुरू किया और ASPState_Job_DeleteExpiredSessions नौकरी एक मिनट में सफलतापूर्वक चलना शुरू हो गया ..... और यह स्पष्ट रूप से मेरी टाइमआउट समस्या हल हो गई।

+0

धन्यवाद, यह मेरे लिए काम किया –

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