ASP.NET'te oturum zaman aşımı


163

IIS 6.0'da bir ASP.NET 2.0 uygulaması çalıştırıyorum. Oturum zaman aşımının varsayılan 20 dakika yerine 60 dakika olmasını istiyorum. Aşağıdakileri yaptım

  1. Set <sessionState timeout="60"></sessionState> içinde web.config.
  2. IIS yöneticisi / Web sitesi özellikleri / ASP.NET yapılandırma ayarlarında oturum zaman aşımını 60 dakika olarak ayarlayın.
  3. Uygulama havuzu özelliklerinde / performansında boşta kalma zaman aşımını 60 dakika olarak ayarlayın.

Hala 20 dakikada bir oturum zaman aşımı alıyorum. Yapmam gereken başka bir şey var mı?


1
Lütfen 20 dakikayı nasıl ölçtüğünüz hakkında bilgi verin. 20 dakikanın başka bir tür değil bir Oturum zaman aşımı olduğundan emin olalım.
John Saunders

11
Lütfen yukarı / aşağı okların yanındaki onay işaretini kullanarak kalite yanıtlarını kabul edildiği şekilde işaretleyin
Brian Webster

3
Sekiz yıl sonra doğru cevap hala kabul edilmedi.
Nathan

Lütfen IIS yöneticisi / Web sitesi özellikleri / ASP.NET yapılandırma ayarları ile ne demek istediğinizi açıklayın. IIS'de adım adım neyi değiştirdiniz?
niico

Yanıtlar:


275

Form kimlik doğrulaması kullanıyor musunuz?

Form kimlik doğrulaması, zaman aşımı için kendi değerini kullanır (varsayılan olarak 30 dak.). Form kimlik doğrulaması zaman aşımı, kullanıcıyı oturum hala etkinken oturum açma sayfasına gönderir. Bu, oturum zaman aşımına uğradığında uygulamanızın verdiği davranışa benzeyebilir.

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

Form zaman aşımını oturum zaman aşımından daha az bir değere ayarlamak, kullanıcıya oturum verilerini kaybetmeden yeniden oturum açacağı bir pencere verebilir.


@ Dakikalar içinde kırılmaz.
Word Yeniden

44

Web.config veya IIS hakkında bir bilgim yok. Ama inanıyorum ki C # kodu gibi yapabilirsiniz

Session.Timeout = 60; // 60 is number of minutes

22
Bu yalnızca geçerli oturumun zaman aşımını ayarlayacak mı? Yoksa bu, tüm uygulama için zaman aşımını ayarlayacak mı?
Johncl

2
Belgelerdeki hiçbir şey , ayarın Session.Timeoutweb.config veya IIS kullanmaktan farklı olduğunu göstermediğinden, tüm uygulama için olduğunu varsayıyorum.
Drasive

@Drasive haklı olduğunu düşünüyorum, ancak sunucuya en az 2 ayrılmış bağlı istemci tarafından kanıtlanması ve Boş oturum zaman aşımı kontrol edilmelidir.
QMaster

42

Web.config dosyanızda aşağıdaki kod bloğunu kullanın. Burada varsayılan oturum zaman aşımı süresi 80 dakikadır.

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

Pop-up uyarı mesajı ile Oturum Zaman Aşımı için aşağıdaki bağlantıyı kullanın.

Oturum Zaman Aşımı Örneği

Bilginize: Yukarıdaki örnekler devexpress pop-up kontrolü ile yapılır, bu nedenle devexpress pop-up kontrolünü normal pop-up kontrolü ile özelleştirmeniz / değiştirmeniz gerekir. Devexpress kullanarak özelleştirmek gerek yok


cookieless yanlış?
Kiquenet

3
@Kiquenet, cookieless'ı true olarak ayarlarsanız, sessionId'iniz yüksek güvenlik riski olan URL'ye gömülür. ASP.NET çerçevesi URL'ye benzersiz bir kimlik ekler, bunu çerezi devre dışı bırakarak veya çerezsiz özniteliği yaptığınız gibi true olarak ayarlayarak kontrol edebilirsiniz. MSDN'ye göre, Varsayılan olarak, SessionID değeri tarayıcıda süresi dolmayan bir oturum çerezinde saklanır, ancak cookieless = "true" belirtirseniz, ASP.NET otomatik olarak sayfanın URL'sine benzersiz bir oturum kimliği ekleyerek cookieless oturum durumunu korur .
Hamza Khanzada

8

Machine.config dosyasında etkili olabilecek bir şey var mı? Web.config dosyasında oturum zaman aşımını ayarlamak, IIS veya machine.config dosyasındaki ayarları geçersiz kılar, ancak uygulamanızın alt klasöründe bir yerde web.config dosyanız varsa, bu ayar uygulamanızın kökündeki ayarı geçersiz kılar.

Ayrıca, doğru hatırlarsam, IIS'deki zaman aşımı .aspx'i değil, yalnızca .asp sayfalarını etkiler. Web.config dosyasındaki oturum kodunuzun doğru olduğundan emin misiniz? Şöyle bir şey olmalı:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

8

Benim durumumda, Uygulama Havuzu idi. Xx dakika için boşta kaldığında yeniden başlayacak şekilde ayarlanmıştır. Yeniden başlamayacak şekilde ayarladığımda, Web Config'den değer kullanıyor gibi görünüyor.


2020 olduğumuzu biliyorum ama bu sadece sorunumu çözdü teşekkürler!
Binary9

8

Genellikle yapmanız gereken tek şey budur ...

20 dakika sonra seansın kaybolma nedeninin boşta olmaktan emin misiniz ...

Oturumun neden silinmiş olabileceğine dair birçok neden vardır. IIS için olay günlüğünü etkinleştirebilir ve ardından oturumun neden temizlendiğini görmek için olay görüntüleyicisini kullanabilirsiniz ... bunun başka nedenlerle olduğunu görebilirsiniz?

Ayrıca olay mesajlarının belgelerini ve ilişkili olay tablosunu da okuyabilirsiniz .


3

Kimlik Doğrulama kullanıyorsanız, web.config dosyasına aşağıdakileri eklemenizi öneririz.

Benim durumumda, kullanıcılar zaman aşımına uğradığında giriş sayfasına yönlendiriliyor:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

Ben web.config
Lst Patrick


2

ASP.Net core 1.0 (vNext veya bunun için herhangi bir ad kullanılırsa) oturumları farklı şekilde uygulanır. Oturum zaman aşımı değerini Startup.cs, şunu void ConfigureServiceskullanarak değiştirdim:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

Veya appsettings.jsondosyayı kullanmak isterseniz , aşağıdakine benzer bir şey yapabilirsiniz:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));

2

Ayarı burada IIS'de bulabilirsiniz:

Ayarlar

Sunucu düzeyinde, web sitesi düzeyinde veya uygulama düzeyinde "ASP" altında bulunabilir.

Sanırım burada web.config düzeyinde ayarlayabilirsiniz. Lütfen bunu kendiniz onaylayın.

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

Global.asax'ta mı?
Kiquenet

1

IIS oturumları zaman aşımı değeri yalnızca klasik .asp uygulamaları içindir, bu IIS yapılandırmasında denetlenir. Sizin durumunuzda ASP.NET uygulamaları için yalnızca web.config tarafından belirtilen zaman aşımı değeri geçerlidir.


IIS'nin uygulama havuzu zaman aşımı ne olacak?
SteveCav

1

Varsayılan oturum zaman aşımı IIS'de 20 dakika olarak tanımlanır

IIS 8.5 web'de barındırılan her site için aşağıdaki yordamları izleyin

IIS Zaman Aşımı yapılandırması

IIS 8.5 Yöneticisi'ni açın.

Site adını tıklayın.

"Yönetim" bölümünün altındaki "Yapılandırma Düzenleyicisi" ni seçin.

Yapılandırma düzenleyicisinin üst kısmındaki "Bölüm:" açılır listesinden "system.web / sessionState" öğesini bulun.

Uygulamaya bağlı olarak mümkün olan en düşük değeri kullanarak "zaman aşımı" değerini "00:20:00 veya daha az" olarak ayarlayın Kabul edilebilir değerler yüksek değerli uygulamalar için 5 dakika, orta değerli uygulamalar için 10 dakika ve düşük için 20 dakikadır değer uygulamaları.

"Eylemler" bölmesinde "Uygula" yı tıklayın.


0

web sitesi için oturumdan zaman aşımını kaldırmak yerine

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

etiketi web.config dosyasından alır.


-1

Timeout özelliği, uygulama için Oturum nesnesine atanan zaman aşımı süresini dakika olarak belirtir. Kullanıcı zaman aşımı süresi içinde sayfayı yenilemez veya bir sayfa istemezse oturum sona erer.

IIS 6.0: İzin verilen minimum değer 1 dakika ve maksimum 1440 dakikadır.

Session.Timeout = 600;

-2

IIS'de oturum zaman aşımı değerini değiştirdikten sonra, lütfen IIS'yi yeniden başlatın. Bunu başarmak için komut istemine gidin. IISRESET yazın ve enter tuşuna basın.


Web.config dosyasının otomatik olarak düzenlenmesi IIS'nin sıfırlanmasına neden olur.
Timothy Gonzalez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.