2009-03-16 76 views
140

Tôi đang chạy một ứng dụng ASP.NET 2.0 trong IIS 6.0. Tôi muốn thời gian chờ của phiên là 60 phút thay vì 20 phút mặc định. Tôi đã làm như sauThời gian chờ của phiên trong ASP.NET

  1. thiết trong web.config
  2. Set timeout phiên đến 60 phút trong cài đặt cấu hình các thuộc tính/ASP.NET quản lý/trang web IIS
  3. Đặt thời gian chờ nhàn rỗi đến 60 phút trong ứng dụng tính chất/hiệu suất của hồ bơi.

Tôi vẫn nhận được thời gian chờ phiên là 20 phút. Tôi có cần làm gì khác không?

+1

Vui lòng cung cấp thông tin về cách bạn đo 20 phút. Hãy chắc chắn rằng 20 phút là một thời gian chờ phiên, và không phải loại nào khác. –

+8

Vui lòng đánh dấu các câu trả lời chất lượng được chấp nhận bằng cách sử dụng dấu kiểm gần mũi tên upvote/downvote –

+1

Tám năm sau, câu trả lời chính xác vẫn không được chấp nhận. – Nathan

Trả lời

8

Đó thường là tất cả những gì bạn cần làm ...

Bạn có chắc chắn rằng sau khi 20 phút, lý do mà phiên đang bị mất đi là không bị nhàn rỗi mặc dù ...

Có nhiều lý do tại sao phiên có thể bị xóa. Bạn có thể bật ghi nhật ký sự kiện cho IIS và sau đó có thể sử dụng trình xem sự kiện để xem lý do tại sao phiên bị xóa ... bạn có thể thấy rằng đó là vì các lý do khác có lẽ?

Bạn cũng có thể đọc documentation for event messages và liên kết table of events.

31

Tôi không biết về web.config hoặc IIS. Nhưng tôi tin rằng từ mã C# bạn có thể làm điều đó như

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

Điều này sẽ chỉ điều chỉnh thời gian chờ của phiên hiện tại? Hoặc điều này sẽ điều chỉnh thời gian chờ cho toàn bộ ứng dụng? – Johncl

+1

Không có gì trong [tài liệu] (https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout%28v=vs.110%29.aspx) cho biết rằng thiết lập 'Phiên. Timeout' là bất kỳ khác với việc sử dụng web.config hoặc IIS, vì vậy tôi giả sử nó là cho toàn bộ ứng dụng. – Drasive

+0

Tôi nghĩ @Drasive có quyền, nhưng nó phải được chứng minh ít nhất là bởi 2 khách hàng được kết nối riêng biệt với máy chủ và kiểm tra thời gian chờ phiên Idle. – QMaster

7

Bạn có điều gì trong machine.config có thể có hiệu lực? Đặt thời gian chờ của phiên trong web.config sẽ ghi đè bất kỳ cài đặt nào trong IIS hoặc machine.config, tuy nhiên, nếu bạn có tệp web.config ở đâu đó trong thư mục con trong ứng dụng của mình, cài đặt đó sẽ ghi đè lên thư mục gốc trong ứng dụng của bạn.

Ngoài ra, nếu tôi nhớ chính xác, thời gian chờ trong IIS chỉ ảnh hưởng đến các trang .asp, chứ không phải .aspx. Bạn có chắc chắn mã phiên của bạn trong web.config là chính xác? Hình ảnh trông giống như sau:

<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" 
/> 
250

Bạn có đang sử dụng Xác thực biểu mẫu không?

Xác thực mẫu sử dụng giá trị của riêng nó cho thời gian chờ (30 phút theo mặc định). Thời gian chờ xác thực biểu mẫu sẽ gửi người dùng đến trang đăng nhập với phiên vẫn hoạt động. Điều này có thể trông giống như hành vi mà ứng dụng của bạn đưa ra khi phiên làm việc hết giờ khiến cho việc này dễ gây nhầm lẫn với người khác.

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

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

Đặt thời gian chờ biểu mẫu thành thứ gì đó ít hơn thời gian chờ của phiên có thể đăng nhập lại mà không làm mất bất kỳ dữ liệu phiên nào.

+0

Bạn đã đúng, đó là cài đặt chế độ xác thực. Có vẻ ok bây giờ. Cảm ơn – klone

+0

tất cả về cookie xác thực biểu mẫu: http://support.microsoft.com/kb/910443 –

+7

Điều gì sẽ xảy ra nếu tôi đang sử dụng xác thực cửa sổ? – HOY

-2

Sau khi thay đổi giá trị thời gian chờ của phiên trong IIS, Vui lòng khởi động lại IIS. Để đạt được điều này đi đến dấu nhắc lệnh. Gõ IISRESET và nhấn Enter.

+0

Chỉnh sửa tệp web.config sẽ tự động khiến IIS đặt lại. –

33

Sử dụng khối mã sau trong tệp web.config của bạn. Ở đây, thời gian phiên mặc định là 80 phút.

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

Sử dụng liên kết sau cho Phiên thời gian hết giờ với thông báo cảnh báo bật lên.

Session Timeout Example

FYI: Những ví dụ trên được thực hiện với sự kiểm soát devexpress cửa sổ bật lên, do đó bạn cần để tùy chỉnh/thay thế kiểm soát cửa sổ bật lên devexpress với kiểm soát cửa sổ bật lên bình thường. Nếu bạn sử dụng devexpress không cần phải tùy chỉnh

3

Nếu bạn đang sử dụng Xác thực, tôi khuyên bạn nên thêm thông tin sau vào tệp web.config.

Trong trường hợp của tôi, người dùng được chuyển hướng đến trang đăng nhập vào thời gian ra:

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

Tôi gặp lỗi ở đây sau khi tôi đặt nó trong web.config –

6

Trong trường hợp của tôi, đó là Application Pool. Nó được thiết lập để khởi động lại khi nhàn rỗi cho xx phút. Khi tôi thiết lập nó để không khởi động lại, có vẻ như nó sử dụng giá trị từ Web Config.

0

nếu bạn muốn thời gian chờ phiên cho trang web hơn loại bỏ

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

thẻ từ file web.config.

0

Vì ASP.Net core 1.0 (vNext hoặc bất kỳ tên nào được sử dụng cho nó) phiên được triển khai khác nhau. Tôi đã thay đổi giá trị thời gian chờ phiên Startup.cs, void ConfigureServices sử dụng:

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

Hoặc nếu bạn muốn sử dụng các tập tin appsettings.json, bạn có thể làm điều gì đó như:

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

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

Thuộc tính Timeout quy định cụ thể tốn nhiều thời gian trong khoảng thời gian được gán cho đối tượng Session cho ứng dụng, tính bằng phút. Nếu người dùng không làm mới hoặc yêu cầu trang trong khoảng thời gian chờ, phiên sẽ kết thúc.

IIS 6.0: Giá trị tối thiểu cho phép là 1 phút và tối đa là 1440 phút.

Session.Timeout = 600; 
1

phiên IIS timeout giá trị cho các ứng dụng asp cổ điển chỉ, điều này được kiểm soát vào cấu hình IIS. Trong trường hợp của bạn Đối với các ứng dụng ASP.NET, chỉ áp dụng giá trị thời gian hết giờ web.config được chỉ định.

1

Bạn có thể tìm thấy các thiết lập ở đây trong IIS:

Settings

Nó có thể được tìm thấy ở cấp server, mức độ trang web, hoặc mức độ ứng dụng trong "ASP".

Tôi nghĩ bạn có thể đặt ở cấp web.config tại đây. Vui lòng xác nhận điều này cho chính bạn.

<configuration> 
    <system.web> 

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

    </system.web> 
</configuration> 
2

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" /> 
</authentication> 

<sessionState mode="InProc" timeout="60" /> 
+2

Chào mừng bạn đến Stack Overflow. Mặc dù đây có thể là một giải pháp đúng, nhưng tốt hơn nên bao gồm cả một số mô tả. – Gary99

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