回答:可能和機器的環境有關,比如防火墻或者殺毒軟件。嘗試關閉防火墻。
問:為什麽調用Session時Session_End方法沒有觸發?嫌棄?
答:首先,Session_End方法只支持InProc類型的會話。其次,要觸發Session_End方法,必須有壹個會話(即該會話已在系統中使用),並且必須至少完成壹個請求(該方法將在該請求中調用)。
問:為什麽我在InProc模式下使用時經常丟失會話?
答:這個問題通常是由應用程序被回收引起的,因為當使用進程內會話時,會話保存在aspnet_wp進程中,當進程被回收時,會話自然會消失。您可以通過查看系統的事件查看器來獲取信息,以確定該進程是否被回收。
請參考:
在ASP.NET應用程序中,會話變量會間歇性丟失
/default.aspx?scid = kben-us;Q316148
1.0中還有壹個bug會導致工作進程被回收並重新啟動。此錯誤已在1.1和sp2中修復。
有關此錯誤的更多信息,請參考:
Aspnet工作進程(Aspnet_wp.exe)被意外回收。
/default.aspx?scid = kben-us;Q321792
問:當會話超時或被放棄時,為什麽新會話的ID與原始會話的ID相同?
答:由於SessionID保存在客戶端瀏覽器的實例中,因此當會話超時後在服務器上重新建立會話時,將使用瀏覽器發送的SessionID,因此會話ID在會話超時並重新建立後不會更改。
問:為什麽每個請求的SessionID不同?
答:問題可能是由於沒有在會話中保存任何信息造成的,也就是說,該會話在程序中的任何地方都沒有使用。在會話中保存信息後,SessionID將始終與瀏覽器相關,並且此時的SessionID不會改變。
問:ASP和ASP.NET會喜歡這個課程嗎?
答:是的。但這是壹個復雜的過程。微軟已經提供了官方解決方案。請參考:/library/default.asp?URL =/library/en-us/dnaspp/html/converttoaspnet . ASP
問:什麽類型的對象可以保存在會話中?
答:這取決於使用的會話模式。使用進程中的會話時,您可以輕松保存任何對象。如果使用非InProc模式,則只能保存可以序列化和反序列化的對象。如果此時保存的對象不支持序列化,則不能在此模式(非InProc)的會話中保存它們。
問:為什麽不能使用響應。重定向和服務器。轉移方法以跳轉到Session_End中的頁面?
答:Session_End是壹個在服務器內部觸發的事件處理程序。它基於服務器內部的計時器,當事件被觸發時,服務器上沒有相關的HttpRequest對象,因此響應。重定向和服務器。此時無法使用轉移方法。
問:妳能在Session_End中獲取HttpContext對象嗎?
答:不需要,因為該事件不與任何請求相關聯,並且沒有基於該請求的上下文。
問:如何在Web服務中使用會話?
答:為了在Web服務中使用會話,有必要在Web服務的調用者中做壹些額外的工作,並且調用Web服務時使用的Cookie必須保存和存儲。有關詳細信息,請參考httpwebclientprotocol。MSDN文檔的cookie容器屬性。但是,如果您使用代理服務器訪問Web服務,由於框架的限制,兩者都不能* * *享受會話。
問:為什麽我在自定義自己的HttpHandler時不能使用會話?
答:在實現自己的HttpHandler時,如果要使用Session,則必須實現以下兩個標記接口之壹:IRequiresSessionState和IReadOnlySessionState。沒有辦法實現這些接口,但是標記接口與使用INamingContainer接口相同。
問:當我使用Webfarm時,為什麽當我重定向到另壹個web服務器時會話會丟失?
答:詳情請參考:
PRB:如果使用SqlServer或StateServer會話模式,會話狀態將在Web場中丟失
/default.aspx?scid = kben-us;325056
問:為什麽我的會話在application _ onacquirerequeststate方法中無效?
答:會話僅在http應用程序後有效。調用acquirerequeststate事件。
詳情請參考:
/library/default.aspURL =/library/en-us/CP guide/html/cpconhandlingpublicevents . ASP
問:如果使用Cookies,我如何從HTTP頁面定向到HTTPS?
答:請嘗試以下方法:
string original URL =“/FX test 3/sub/foo 2 . aspx“;
string modified URL =“/default . aspx?scid = kben-us;837376
問:如何刪除會話變量?
答:要刪除會話變量,可以使用HttpSessionState。Remove()方法。
問:有沒有辦法知道應用程序的會話在運行時占用了多少內存?
a:沒有,目前這個數值無法驗證,至少我還沒有看到這個信息。但是可以通過性能監視器和程序代碼粗略地估計壹個值。
問:當頁面中有框架集時,我發現每個框架中顯示的頁面的SessionID在第壹次請求時是不同的。為什麽?
答:原因是妳的框架集被放置在htm頁面而不是ASPX頁面上。
在正常情況下,如果壹個框架集是壹個aspx頁面,當妳請求壹個頁面時,它會首先將請求發送到Web服務器,此時它已經獲得了SessionID,然後瀏覽器會單獨請求框架中的其他頁面,這樣所有頁面的SessionID都是相同的,即框架集頁面的SessionID。
但是,如果您將HTML頁面用作框架集頁面,則第壹個請求將是Html頁面。當頁面從服務器返回時,沒有生成會話,然後瀏覽器將請求框架中的頁面,這樣這些頁面將生成自己的SessionID,因此在這種情況下會出現此問題。當您刷新頁面時,SessionID將保持不變,它是上壹個請求頁面的SessionID。
問:我可以將不同應用程序的會話保存在同壹SQL Server服務器的不同數據庫中嗎?
答:是的,請參考:
修復:對SQL Server會話狀態的所有應用程序使用壹個SQL數據庫可能會導致瓶頸
/default.aspx?scid = kben-us;836680
問:我可以在Session_End獲取有效的HttpSessionState和HttpContext對象嗎?
答:您可以在該方法中獲取HttpSessionState對象,並且可以通過使用Session直接訪問它。但是,無法獲取HttpContext對象,因為該事件不與任何請求相關聯,因此沒有上下文對象。
問:為什麽我在SQLServer模式下使用會話時它不會過期?
答:在SqlServer模式下,Session的過期是通過註冊SQL代理完成的。請檢查您的SQL代理是否正在運行。
問:在我將EnableSessionState設置為“ReadOnly”後,我仍然可以在InProc模式下修改session的值。為什麽?
答:即使EnableSessionState標記為ReadOnly,用戶仍然可以在InProc模式下編輯會話。唯壹的區別是會話在請求期間不會被鎖定。
問:如何避免在鏈接SQL時指定密碼?
答:使用可信鏈接或使用加密鏈接字符串。有關這方面的更多信息,請參考:
如何使用ASP.NET實用工具加密憑據和會話狀態連接字符串
/default.aspx?scid = kben-us;329290
問:我如何在自己的課堂上使用會話?
答:可以使用HttpContext。當前。會話如下:
HttpContext。current . Session【“Session key“】=“Session value“;
同樣,您可以以這種方式使用Application對象。
問:為什麽我的請求在切換到SQLServer模式後被掛起?
答:檢查會話中存儲的所有對象是否都可以存儲在SQLServer模式下,即這些對象必須支持序列化。
問:當會話設置為無cookieless時會發生什麽?
答:當cookieless設置為true時,主要有以下約束:
1.頁面中不能使用絕對鏈接。
2.在應用程序中切換Http和Https時,還需要完成其他壹些步驟。
如果妳發送壹個鏈接給別人,此時的URL將包含會話ID的信息,因此兩個人將共享壹個會話。
問:我可以在數據庫中保存會話嗎?
答:當然可以,詳情請參考:/default.aspx?scid = kben-us;311209