2011-08-19 27 views
5

Satırıma sahibim:Oturum zaman aşımı neden Sql Server'a ayarlandığında çalışmıyor?

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

Oturumu bir sql state sunucusunda depolar. Ancak bir dakika sonra zaman aşımına uğramaz.

InProc modunu kullanmak için satırı değiştirdiğimde:

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

Bir dakika sonra zaman aşımı yapıyor.

Bunun neden olduğu hakkında bir fikriniz var mı? SqlServer kullanırken zaman aşımına nasıl alabilirim?

cevap

6

SQL Server Express kullanıyorsanız, bunun nedeni, DeleteExpiredSessions yordamını yürütecek SQL Server Agent yok olmasıdır. Ben prosedür (hatırlayamıyorum saklanan güncelleme oturumuna DeleteExpiredSessions prosedüründen SQL ekledik oturumu günceller saklı prosedürde

: Burada

soruna olası bir çözüm olur adı) eski oturumları denetler, eski oturumu siler ve geçerli oturumları güncelleştirir. oturumunu her oturduğunda güncelleştiren saklı yordam yordamı, , böylece oturum oturumun güncelleştirilmesinden önce eski oturumları kaldıran iki satır daha ekledim. Bu iyi çalışıyor gibi görünüyor.

1

Sen form kimlik doğrulama tanımlama zaman aşımı ayarlayarak oturumun zaman aşımı kontrol etmek mümkün olabilir:

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

kullanıcı 1 dakika sonra oturumu ile temasını kaybeder Bu şekilde.

+0

form kimlik doğrulama zaman aşımı ve oturum zaman aşımı iki ayrı şeylerdir. – KingOfHypocrites

6
  1. SQL Server Agent hizmet

  2. sağ tıklayın ASPState_Job_DeleteExpiredSessions adlı SQL Server Agent işi ve "Geçmişi" tıklayın

    çalıştığından emin olun - bu işi başarıyla her 1 çalıştığından emin olun dakika. nasılsa Benim durumumda

, (muhtemelen adlandırılmış örneklerini içeren çoklu yüklemeleri biri sırasında) benim SQL Server Agent sadece sunucu adı değil, Sunucuadı \ örnekadı onun mülkiyet Connection -> Alias Localhost Server set vardı.

Bu değişiklik olduğunda, ASPState_Job_DeleteExpiredSessions süresiz olarak çalıştı ve durdurulamadı. Bu nedenle, SQL Server Agent hizmetini yeniden başlatmayı denedim, ancak yedeklemeye başlamayacaktı. Ben \ örnekadı servername için Connection -> Alias Localhost Server özelliği değişti Ancak, bir kez SQL Server Agent sağ arka başladı ve ASPState_Job_DeleteExpiredSessions iş olması gerektiği gibi dakikada bir kez başarıyla koşmaya başladı ..... ve bu Açıkçası benim zaman aşımı sorunu çözdü.

+0

Teşekkürler, bu benim için çalıştı –

İlgili konular