2011-08-19 28 views
5

Tôi có dòng:Tại sao không phải là thời gian chờ phiên làm việc khi được đặt thành SqlServer?

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

Cửa hàng nào trong phiên làm việc trong máy chủ trạng thái sql. Tuy nhiên nó không hết thời gian chờ sau một phút.

Khi tôi có sự thay đổi để sử dụng chế độ InProc:

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

Nó không thời gian chờ sau một phút.

Mọi ý tưởng tại sao điều này xảy ra? Làm thế nào tôi có thể làm cho nó hết thời gian khi sử dụng SqlServer?

Trả lời

6

Nếu bạn đang sử dụng SQL Server Express, đó là vì không có SQL Server Agent để thực thi thủ tục DeleteExpiredSessions.

Dưới đây là một cách giải quyết cho vấn đề:

Trong thủ tục lưu trữ mà cập nhật phiên giao dịch, tôi đã thêm SQL từ các thủ tục DeleteExpiredSessions với phiên bản cập nhật được lưu trữ thủ tục (Tôi không thể nhớ tên) để kiểm tra các phiên cũ, xóa phiên cũ và sau đó cập nhật các phiên hiện tại. Thủ tục được lưu trữ cập nhật phiên chạy trên mọi nhấp chuột, vì vậy tôi đã thêm hai dòng khác xóa phiên cũ trước phiên được cập nhật. Điều này dường như làm việc tốt.

1

Bạn có thể kiểm soát thời gian chờ phiên bằng cách thiết lập thời gian chờ của cookie hình thức xác thực:

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

Bằng cách đó người dùng thua tiếp xúc với các phiên sau 1 phút.

+0

Thời gian chờ xác thực biểu mẫu và thời gian chờ của phiên là hai điều riêng biệt. – KingOfHypocrites

6
  1. Hãy chắc chắn rằng các dịch vụ SQL Server Agent đang chạy

  2. Nhấp chuột phải vào công việc SQL Server Agent tên ASPState_Job_DeleteExpiredSessions và nhấp vào "View History" - Đảm bảo công việc này đang chạy thành công mỗi 1 phút.

Trong trường hợp của tôi, bằng cách nào đó (có thể là trong một trong nhiều cài đặt liên quan đến trường hợp đặt tên) SQL Server Agent tôi đã thiết lập tài sản Connection -> Alias Localhost Server của nó để chỉ tên máy chủ và không phải là servername \ instancename.

Khi thay đổi này xảy ra, ASPState_Job_DeleteExpiredSessions xuất hiện để chạy vô thời hạn và không thể dừng lại. Vì vậy, tôi đã cố gắng khởi động lại dịch vụ SQL Server Agent, nhưng nó sẽ không khởi động lại. Tuy nhiên, một khi tôi đã thay đổi thuộc tính Connection -> Alias Localhost Server thành servername \ instancename, SQL Server Agent bắt đầu phải sao lưu và công việc ASPState_Job_DeleteExpiredSessions bắt đầu chạy thành công mỗi phút một lần như nó ..... và điều này rõ ràng đã giải quyết được vấn đề thời gian chờ của tôi.

+0

Cảm ơn, điều này đã làm việc cho tôi –

Các vấn đề liên quan