2013-04-18 30 views
8

在我們的ASP.NET網站中,其中一個頁面中有一些標籤。每個標籤代表不同的內容,並從一個標籤移動到另一個標籤重新加載整個頁面。 如果我目前處於選項卡的其中一個區域,並在此停留大約一分鐘或更長時間,然後轉到另一個選項卡,則只會出現白色空白屏幕。(在瀏覽器中沒有頁面源代碼信息)。白屏問題,如果用戶在asp.net頁面中保持空閒狀態

不幸的是,這個相同的問題在較低的測試環境中對於同一個網站來說完全不可重現。問題僅在網站的生產版本中發生。

是否有IIS設置或web.config設置,我應該更改以解決此問題。因爲我相信有關網頁的源代碼不會是一個理由。

+4

_「是否有IIS設置或web.config設置,我應該改變以解決此問題。」_ - 我不認爲在用戶閒置一分鐘後會出現_「顯示白頁」_設置。你將不得不對這個錯誤進行分析,沒有任何人能從這裏看到。啓用最詳細的日誌記錄和跟蹤,使用Fiddler查看,使用不同的瀏覽器,嘗試查明_who_顯示白頁和_why_。 – CodeCaster

+2

您使用哪種驗證模式?你使用會話狀態來存儲經過身份驗證的用戶信息嗎?檢查在瀏覽器的開發人員工具或Fiddler中切換標籤時服務器如何處理請求。 –

+0

在你的頁面中是否有任何長時間運行的進程?像Flash動畫,RSS提要,Javascript或AJAX?你可以使用httpwatch或httpfox來檢查。您還應該使用perfmon檢查服務器的CPU使用情況。 – Pinoy2015

回答

5

這可能是因爲會話超時已達到結束會話的限制。

你在這種情況下,三個可能的解決方案:

首先

你可以嘗試編輯web.config文件位於您的應用程序來擴展會話超時的根源。嘗試是這樣的:

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

</sessionState> 

根據MSDN你可以設置timeout高達525,601分鐘(1年)。

如果不工作,你有機會,你可以嘗試編輯在IIS超時:

打開IIS,點擊應用程序池,選擇應用程序 爲您的應用程序池。

右鍵點擊它,選擇屬性。

在「性能」選項卡中,將「空閒時間爲......分鐘後關閉工作進程」的空閒超時設置爲所需分鐘數 。

重要提示:除此之外,您必須如上所述在web.config中設置超時。

您可以創建一個ajax功能在後臺執行,防止過期會話:

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); 

就是這樣。希望能幫助到你。

1

你是否使用任何自定義http模塊?我們可以看看頁面源代碼和代碼嗎?它發生在我身上的時候,我使用了elmah,但情況卻完全不同。

其他可能是由於其他人指出的會話事情。希望有所幫助。

1

我會打開chome開發工具或螢火蟲,如果在Firefox中。如果在螢火蟲中,我會查看網絡和控制檯標籤,並從網絡的角度看看實際發生的情況。應該很容易查看開發中的流量並與生產進行比較。我猜他們是不一樣的,它會立即指向你正確的方向。

如果你想看流量,提琴手也是一種選擇,就好像你是一箇中間人一樣。

相關問題