2010-10-01 123 views
2

我在生產系統上啓用了健康監視(asp.net webforms.net 4),我發現有很多錯誤被髮送給我,表明會話變量已經丟失。我試圖從會話狀態附加到實體框架數據上下文的東西,並獲得「值不能爲空,參數名稱實體」錯誤)。所以不知何故會話變量現在包含null而不是一個對象。失去我的會話變量 - 什麼異常會導致會話丟失?

有趣的是,我們在兩個獨立的服務器上部署了相同的應用程序 - 一個用於外部用戶的DMZ服務器和一個用於內部用戶的內部服務器。這兩個不同服務器上的這些應用程序似乎都有同樣的問題。

運行狀況監控還監控生命週期事件,我可以從中看到我們沒有像IIS回收,配置更改,bin文件夾更改,重新編譯等等,發生。

我讀過此頁:http://weblogs.asp.net/bleroy/archive/2004/08/03/Don_2700_t-redirect-after-setting-a-Session-variable-_2800_or-do-it-right_2900_.aspx

我可以證實,這是不是因爲沒有發生一個Response.Redirect的問題 - 這是一個在線申請表 - 它把一個對象在會話狀態上的Page_Load和有一個多視圖 - 當按下「下一個」時,該對象脫離會話狀態,附加到數據上下文,從Web表單更改並更新數據上下文。所以沒有response.redirect發生。

我也可以確認該鏈接中的「Update 1」和「Update 2」中的詳細信息與我無關 - 應用程序池中只有1個工作進程正在運行,並且服務器名稱或Web地址不包含下劃線。

我也承認發生會話超時的可能性,但它們應該由正在運行以檢測會話超時的其他代碼處理(請參閱:http://blogs.msdn.com/b/nikhiln/archive/2007/06/21/detecting-session-timeout-in-asp-net-2-0-web-applications.aspx),我一遍又一遍地測試 - 部分問題是我無法重現這個錯誤我自己。

所以: -
- 不超時
- 而不是IIS工作進程回收或會產生健康監測一輩子的大事
任何其他東西 - 不使用的Response.Redirect
- 沒有得到一個Web農場/多個工作進程

然後我發現這個線程:http://bytes.com/topic/asp-net/answers/490975-disappearing-sessions其中一個MVP說以下內容:

任何時候IIS應用程序是 重新啓動,所有會話也重新啓動 。所以是的,這通常會在重新編譯和一些 重大未處理應用程序級別 例外期間發生 。

但遺憾的是並沒有詳細說明是什麼樣的「重大未處理的應用程序級異常」可能會導致會話丟失 - 這是一個全新的系統,我們也還是有,我們正在進行修復工作未處理產生的異常 - 所以我們在這裏討論什麼樣的例外?一個人會話中的應用程序異常是否真的會刪除應用程序持有的所有會話?

這個線程還談到了它:http://bytes.com/topic/asp-net/answers/490975-disappearing-sessions

我見過類似的唯一事情是 當 ASP.NET應用程序中出現運行錯誤,導致 應用程序重新啓動。你是否也在 接收Application_OnStart事件 ?

所以我猜如果我有一個運行時錯誤導致應用程序重新啓動,這也會產生一個健康監控生命週期事件,對嗎?我只是沒有得到任何這些......

如果我實際上可以複製這個,但我不能!

無論如何,對於一個長長的ra question問題感到抱歉,只希望有人有一些想法。

問候

回答

1

你有沒有考慮把會話狀態的應用程序之外,例如與任何的asp.net out-of-process modes for session state

默認情況下,會話狀態保持在您的應用程序內。這不是在多臺服務器可用,也不是維持整個應用程序崩潰(即,在您的應用程序的任何未處理的異常。)

  1. 使用SQL Server模式,使其在多臺服務器提供相同的會話狀態。

  2. 或者,如果您的負載平衡器保證強大的會話親和力,則可以使用asp.net狀態服務器來管理每個服務器中的狀態,使狀態能夠在應用程序重新啓動後繼續運行。

+0

謝謝。我會放棄它。 – bgs264 2010-10-04 09:31:41

+0

嗨。感謝您的評論,我們將會話狀態在今天上午的更新中移出了進程(到ASP.net狀態服務器),但不幸的是它沒有解決問題。我們仍然有會話變量丟失。 – bgs264 2010-10-05 10:43:24

+0

與系統管理員在IIS中的其他調整,現在已經工作。對不起,緩慢接受,但感謝您的幫助。 – bgs264 2011-02-24 17:16:57