2013-04-18 25 views
8

Trong trang web ASP.NET của chúng tôi, một trong các trang có một số tab trong đó. Mỗi tab đại diện cho nội dung khác nhau và di chuyển từ tab này sang tab khác để tải lại toàn bộ trang. Nếu tôi hiện đang ở một trong các tab và không hoạt động ở đó trong khoảng một phút hoặc lâu hơn và sau đó chuyển sang một tab khác, chỉ một màn hình trắng trắng xuất hiện. (không có thông tin mã nguồn trang cho điều đó trong trình duyệt).Vấn đề màn hình trắng, nếu người dùng ở chế độ không hoạt động trên trang asp.net

Đáng buồn thay cùng một vấn đề này không thể tái tạo được cho cùng một trang web trong môi trường thử nghiệm thấp hơn. Sự cố chỉ xảy ra trong phiên bản Sản xuất của trang web.

Có cài đặt IIS hoặc cài đặt web.config mà tôi nên thay đổi để giải quyết vấn đề này không. Như tôi tin rằng mã nguồn của trang web liên quan sẽ không phải là một lý do.

+4

_ "Có cài đặt IIS hoặc cài đặt web.config mà tôi nên thay đổi để giải quyết vấn đề này không." _ - Tôi không nghĩ có _ "hiển thị trang trắng sau khi người dùng rảnh trong một phút" _ cài đặt. Bạn sẽ phải thực hiện phân tích lỗi này, không có ai có thể xem từ đây. Cho phép ghi nhật ký chi tiết nhất và truy tìm, hãy xem xét với Fiddler, sử dụng một trình duyệt khác, cố gắng xác định _who_ đang hiển thị một trang trắng và _why_. – CodeCaster

+2

Bạn sử dụng chế độ xác thực nào? Bạn có sử dụng trạng thái phiên để lưu trữ thông tin người dùng đã được xác thực không? Kiểm tra cách xử lý yêu cầu của máy chủ khi tab chuyển sang công cụ nhà phát triển của trình duyệt hoặc trong Fiddler. –

+0

Có quá trình chạy dài nào được thực hiện trong trang của bạn không? Giống như hoạt ảnh flash, nguồn cấp dữ liệu RSS, Javascript hoặc AJAX? Bạn có thể kiểm tra điều này bằng cách sử dụng httpwatch hoặc httpfox. Bạn cũng nên kiểm tra việc sử dụng CPU của máy chủ của bạn bằng cách sử dụng perfmon. – Pinoy2015

Trả lời

5

Điều này có thể do thời gian chờ của phiên đã đạt đến giới hạn kết thúc phiên.

Bạn có ba giải pháp khả thi trong trường hợp này:

Đầu tiên

Bạn có thể thử chỉnh sửa các tập tin web.config nằm trên thư mục gốc của ứng dụng của bạn để kéo dài thời gian chờ phiên. Hãy thử một cái gì đó như thế này:

<sessionState mode="StateServer" timeout="500"> 

</sessionState> 

Theo MSDN bạn có thể đặt timeout lên đến 525,601 phút (1 năm).

Second

Nếu nó không hoạt động và bạn có quyền truy cập, bạn có thể thử chỉnh sửa thời gian chờ trên IIS:

Mở IIS, bấm vào Application Pools, Chọn Application hồ bơi cho ứng dụng của bạn.

Nhấp chuột phải vào đó, chọn Thuộc tính.

Trong tab Hiệu suất, Đặt thời gian chờ nhàn rỗi làm số phút mong muốn cho "quy trình công nhân tắt máy sau khi không hoạt động trong ..... phút".

QUAN TRỌNG: Ngoài việc này, bạn phải đặt thời gian chờ trong web.config như đã nói ở trên.

Thứ ba

Bạn có thể tạo một chức năng ajax được thực hiện ở chế độ nền, ngăn chặn phiên từ hết hạn:

function keepSessionAlive(mod) { 
mod.open("GET", "blank.html", true);    
mod.onreadystatechange = function() { 
    if (mod.readyState == 4) {   
     document.getElementById("#blankDiv").innerHTML = mod.responseText; 
    } 
}; 
mod.send(null) 
} 
setInterval('keepSessionAlive()', 100000); 

Vậy là xong. Hy vọng nó giúp.

1

Bạn có sử dụng bất kỳ mô-đun http tùy chỉnh nào không? Chúng ta có thể xem trang aspx và mã đằng sau không? Nó xảy ra với tôi khi tôi sử dụng elmah nhưng trong kịch bản hoàn toàn khác.

Khác có thể là do điều phiên mà người khác đã chỉ ra. Hy vọng rằng sẽ giúp.

1

Tôi sẽ mở công cụ dev chome hoặc firebug nếu trong firefox. Nếu trong firebug, tôi sẽ xem xét các tab net và giao diện điều khiển và xem những gì thực sự xảy ra từ một quan điểm mạng. Nó sẽ được dễ dàng để xem xét lưu lượng truy cập trong dev và so sánh với sản xuất. Tôi đoán họ không giống nhau, và nó sẽ ngay lập tức chỉ cho bạn đi đúng hướng.

Fiddler cũng là một tùy chọn nếu bạn muốn xem lưu lượng truy cập như thể bạn là một người đàn ông trung niên.

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