亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果當前的ASP.NET會話為空,我該怎么辦?

如果當前的ASP.NET會話為空,我該怎么辦?

慕的地6264312 2019-07-26 17:04:17
如果當前的ASP.NET會話為空,我該怎么辦?在我的Web應用程序中,我執行類似這樣的操作來讀取會話變量:if (HttpContext.Current.Session != null &&  HttpContext.Current.Session["MyVariable"] != null){     string myVariable= (string)HttpContext.Current.Session["MyVariable"];}我理解為什么重要的是檢查為什么HttpContext.Current.Session [“MyVariable”]為空(該變量可能尚未存儲在會話中,或者會因各種原因重置了會話),但為什么我需要檢查如果HttpContext.Current.Session是null?我的理解是,會話是由ASP.NET自動創建的,因此HttpContext.Current.Session永遠不應為null。這個假設是否正確?如果它可以為null,是否意味著我還應該在存儲內容之前檢查它:if (HttpContext.Current.Session != null){     HttpContext.Current.Session["MyVariable"]="Test";}else{     // What should be done in this case (if session is null)?     // Is it possible to force the session to be created if it doesn't exist?}
查看完整描述

3 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

以下陳述并不完全準確:

“所以如果你從你的頁面調用其他功能,包括靜態類,你應該沒問題”

我正在調用一個靜態方法,它通過HttpContext.Current.Session引用會話,它是null。但是,我通過使用jQuery的ajax通過webservice方法調用該方法。

正如我在此處發現的那樣,您可以使用方法的簡單屬性修復問題,或使用Web服務會話對象:

但是有一個技巧,為了在Web方法中訪問會話狀態,您必須啟用會話狀態管理,如下所示:

[WebMethod(EnableSession = true)]

通過指定EnableSession值,您現在可以使用托管會話。如果未指定此值,則將獲得一個空的Session對象,并且在嘗試訪問會話對象時很可能會遇到空引用異常。

感謝Matthew Cozier的解決方案。

我以為我會加兩分錢。


查看完整回答
反對 回復 2019-07-26
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

如果您的Session實例為null并且您在'ashx'文件中,則只需實現'IRequiresSessionState'接口。

此接口沒有任何成員,因此您只需在類聲明(C#)后添加接口名稱:

public class MyAshxClass : IHttpHandler, IRequiresSessionState


查看完整回答
反對 回復 2019-07-26
  • 3 回答
  • 0 關注
  • 541 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號