Cara mengatur batas waktu sesi di web.config

179

Saya telah berusaha sangat keras tetapi tidak dapat menemukan solusi tentang cara menetapkan nilai batas waktu sesi untuk sesi dalam proses untuk aplikasi web ASP.Net.

Saya menggunakan VSTS 2008 +. Net 3.5 + C #. Inilah yang saya tulis sendiri untuk menetapkan batas waktu menjadi 1 menit, benarkah?

Saya menulis di bawah bagian system.web di web.config

<sessionState timeout="1" mode="InProc" />
George2
sumber
5
Cara Anda menentukan batas waktu sudah benar. Apakah Anda memiliki masalah dengannya?
Darin Dimitrov
7
Anda tahu bahwa ini berarti akan kedaluwarsa setelah 1 menit tidak aktif, bukan setelah 1 menit dari awalnya? Dugaan saya adalah bahwa jika Anda mengajukan pertanyaan ini, dan telah mengetik batas waktu dengan benar, Anda mungkin menyesatkan cara kerjanya.
Ivan Zlatanov
1
Saya perlu mengatur waktu tidak aktif, itu hanya yang saya butuhkan. Ivan terima kasih!
George2
LOL! Saya tidak akan merekomendasikan pengaturan time-out hanya 1 menit. Itu akan membunuh daya guna!
Brian McCarthy
3
Saya benar-benar mengerti perlunya periode waktu singkat. Dalam kasus saya, ini adalah untuk menguji kegunaan situs jika sesi tidak berjalan dan bagaimana bereaksi setelah pengguna kembali. Sulit untuk menguji itu sementara juga debugging kecuali sesi timeout terjadi dengan cepat
Brett Weber

Jawaban:

323

Jika Anda ingin mengatur batas waktu menjadi 20 menit, gunakan sesuatu seperti ini:

    <configuration>
      <system.web>
         <sessionState timeout="20"></sessionState>
      </system.web>
    </configuration>
Wolfwyrd
sumber
16
20 menit atau jam? (timeout = "20")
Muhammad Awais
21
Config menyatakan batas waktu dalam menit jadi 20 menit
Wolfwyrd
50

Nilai yang Anda atur di timeoutatribut adalah salah satu cara yang benar untuk mengatur nilai batas waktu sesi.

The timeoutmenspesifikasikan atribut jumlah menit sesi bisa menganggur sebelum ditinggalkan. Nilai default untuk atribut ini adalah 20.

Dengan menetapkan nilai 1 ke atribut ini, Anda telah menetapkan sesi untuk ditinggalkan dalam 1 menit setelah menganggur.

Untuk mengujinya, buat halaman aspx sederhana, dan tulis kode ini di event Page_Load,

Response.Write(Session.SessionID);

Buka browser dan buka halaman ini. Id sesi akan dicetak. Tunggu satu menit berlalu, lalu tekan segarkan. Id sesi akan berubah.

Sekarang, jika tebakan saya benar, Anda ingin membuat pengguna Anda keluar segera setelah sesi habis. Untuk melakukan ini, Anda dapat memasang halaman login yang akan memverifikasi kredensial pengguna, dan membuat variabel sesi seperti ini -

Session["UserId"] = 1;

Sekarang, Anda harus melakukan pemeriksaan pada setiap halaman untuk variabel seperti ini -

if(Session["UserId"] == null)
    Response.Redirect("login.aspx");

Ini adalah contoh sederhana tentang bagaimana ini akan bekerja.

Tetapi, untuk membuat aplikasi aman berkualitas produksi Anda, gunakan kelas Peran & Keanggotaan yang disediakan oleh ASP.NET. Mereka menyediakan otentikasi berbasis Formulir yang jauh lebih dapat diandalkan otentikasi berbasis Sesi normal yang Anda coba gunakan.

Kirtan
sumber
Saran hebat ... Pastikan untuk menetapkan variabel Sesi terlebih dahulu sebelum pengujian dengan Response.Write (Session.SessionID); selain itu akan menyegarkan dengan ID baru setiap kali Anda menyegarkan.
Chris Catignani
1

Jika Anda menggunakan MVC, Anda meletakkan ini di file web.config di direktori Root aplikasi web, bukan web.config di direktori Views. Itu juga harus DI simpul system.web, bukan di bawah seperti yang dinyatakan George2 dalam pertanyaannya: "Saya menulis di bawah bagian system.web di web.config"

Nilai parameter batas waktu mewakili menit.

Ada atribut lain yang dapat diatur di elemen sessionState. Anda dapat menemukan informasi di sini: docs.microsoft.com sessionState

<configuration>
   <system.web>
      <sessionState timeout="20"></sessionState>
   </system.web>
</configuration>

Anda kemudian dapat menangkap awal sesi baru di file Global.asax dengan menambahkan metode berikut:

void Session_Start(object sender, EventArgs e)
{
    if (Session.IsNewSession)
    {
        //do things that need to happen
        //when a new session starts.
    }
}
Keith Aymar
sumber
0

Gunakan ini di web.config:

<sessionState 

  timeout="20" 
/>
Balaji Birajdar
sumber
30
Anda tidak perlu sebagian besar atribut yang Anda daftarkan, hanya saja timeout. stateConnectionStringdan sqlConnectionStringdiabaikan ketika mode="InProc", dan nilai untuk modedan cookielessdiatur ke nilai standarnya. Jadi, ini benar-benar menyaring ke jawaban Wolfwyrd.
arcain
0

Jika tidak berfungsi web.config, Anda perlu mengaturnya dari IIS.

asif jan
sumber