2011-01-05 35 views
7

Trong ứng dụng web của tôi, tôi đang sử dụng một số biến phiên, được đặt khi tôi đăng nhập:phiên biến thời gian chờ trong ứng dụng asp.net

ví dụ: Session("user_id") = reader("user_id")

Tôi sử dụng điều này thông qua ứng dụng của mình.

Khi biến phiên hết hạn, điều này sẽ xảy ra lỗi khi chủ yếu kết nối với cơ sở dữ liệu là session("user_id") đối với một số truy vấn.

Tôi làm cách nào để đặt các biến phiên của mình để khi chúng hết thời gian để truy cập trang đăng nhập hoặc cách ít nhất có thể tăng khoảng thời gian có sẵn?

Trả lời

11

Tôi đoán bạn đang sử dụng hình thức xác thực. Bí quyết ở đây là để đảm bảo rằng Xác thực biểu mẫu của bạn hết hạn trước phiên.

tôi đã viết về điều này trong câu trả lời này ở đây:

How to redirect to LogIn page when Session is expired (ASP.NET 3.5 FormsAuthen)

Ví dụ:

Cấu hình xác thực hình thức của bạn - điều này đặt ra thời gian chờ đến 60 phút:

<authentication mode="Forms"> 
    <forms defaultUrl="~/Default.aspx" 
     loginUrl="~/Login.aspx" 
     slidingExpiration="true" 
     timeout="60" /> 
</authentication> 

Kéo dài thời gian hết hạn phiên để một thời gian dài hơn:

<sessionState 
    mode="InProc" 
    cookieless="false" 
    timeout="70"/> 

Trong Login.aspx mã của bạn phía sau bạn cũng có thể làm một Session.Clear(); để loại bỏ dữ liệu phiên cũ trước khi gán giá trị phiên.

1

Trước đây tôi đã sử dụng trang cơ sở hoặc trang chính trên mỗi trang (tạo ngoại lệ cho trang đăng nhập) đọc mã thông báo phiên để xem liệu người dùng có đăng nhập hiện tại hay không.

Nếu nó bao giờ đọc một null, nó sẽ lưu url hiện tại và chuyển hướng đến trang đăng nhập.

Sau khi đăng nhập, nó đọc url đã lưu và chuyển hướng người dùng trở lại trang được yêu cầu.

Tăng giá trị thời gian chờ của phiên là một cài đặt trong IIS.

1

Làm thế nào tôi có thể thiết lập các biến session của tôi vì vậy mà khi chúng được timed out để đi đến trang đăng nhập

Kiểm tra nếu họ = null làm một Response.Redirect("Home.aspx");

hoặc làm thế nào có thể ít nhất tăng thời gian có sẵn là ?

của nó trong web.config trong sessionState yếu tố

0

Tôi nghĩ rất nhiều người đã thực hiện cuộc gọi phiên để cung cấp mẫu "tải chậm".Một cái gì đó như thế này:

class SessionHelper 
{ 
    public static string GetUserId() 
    { 
     string userId = (string)System.Web.HttpContext.Current.Session["UserId"]; 

     if(userId == null) 
     { 
      userId = reader("UserId"); 
      System.Web.HttpContext.Current.Session["UserId"] = userId; 
     } 

     return userId; 
    } 
} 
Các vấn đề liên quan