當我們在設定 ASP.NET 應用程式以 "ASP.NET 狀態服務" 儲存 Session 資料時,可能有人曾經預過這個問題,錯誤訊息如下:
'/' 應用程式中發生伺服器錯誤。
無法將工作階段狀態要求送至工作階段狀態伺服器。請確定 ASP.NET 狀態服務已經啟動且用戶端與伺服器的通訊埠都相同。如果伺服器是在遠端電腦上,請檢查 HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ aspnet_state\ Parameters\ AllowRemoteConnection 的值,確定它是否接受遠端要求。如果伺服器是在本機電腦上,而且前述登錄值不存在或設定為 0,狀態伺服器連接字串就必須使用 'localhost' 或 '127.0.0.1' 做為伺服器名稱。
我之前就是怎麼調整都還是連不上,明明只是「本地連接 ( Local Connection )」而已,也沒有設定任何讓【ASP.NET 狀態服務】開放遠端連接的機碼,但為什麼總是連不上呢!而且自己用 Telnet 指令測試連結 ASP.NET 狀態服務的 Port 42424 也都可以正常連線,但就是 ASP.NET 無法連線而已,遇到這種情況真的會吐血。
查了好幾個小時後才知道,原來是 NOD32 防毒軟體的問題,阻擋了「疑似」HTTP 的連線,因為 NOD32 有支援 Internet Monitor (IMON) 的功能,可以偵測與過濾有問題的 HTTP 封包,就是因為這樣才導致無法使用 ASP.NET 狀態服務。
解決的方法如下:
-
先開啟 NOD32 Control Center,點選 IMON,再點選 Setup 按鈕
-
開啟 IMON Setup 後選取 HTTP 頁籤,然後取消勾選 Automatically detect HTTP communication on other ports.
-
按下 OK 後就立即可以用 ASP.NET 狀態服務了
所以如果有人有安裝防毒軟體或個人防火牆軟體的話,注意可能是這個問題,去看看有沒有設定可以將 ASP.NET 狀態服務排除在掃瞄範圍之外!