簡體   English   中英

調試 ASP.NET 時會話清除結束,但在開發和測試服務器上工作正常

[英]Session clears ends when debugging ASP.NET but works fine on the dev and test server

我有一個奇怪的問題,當我在 Visual Studio 2010 中調試會話時,會話在回發后結束。

我在第一頁的會話中存儲了一個變量。 它在下一頁保持其價值,但在那之后它會丟失。 它返回一個空值。 奇怪的是,當我將確切的代碼復制到開發或測試服務器時,它工作正常......

任何想法可能會發生什么? 謝謝。

更新
代碼相當簡單。 我有一個default.aspx頁面,我在其中設置了一個會話變量:

 HttpContext.Current.Session["PurchaseOID"] = purchaseOID;

當我單擊“下一步”時,Default.aspx 頁面會將其重定向到 Information.aspx 頁面。 此頁面上收集了其他用戶信息(使用 DevExpress 控件)。 當我在此頁面上單擊“下一步”時,會話變量“PurhcaseOID”在頁面加載時返回 null。

protected void Page_Load(object sender, EventArgs e)
{
      if(HttpContext.Current.Session["PurchaseOID"] == null){
        throw new Exception("error!");
      }
}

奇怪的是,第一次加載頁面時會保留會話。 但是在回發時,它失去了它的變量。 此外,這是剛剛開始發生的事情。 我已經在這個代碼上工作了一個月左右,它運行良好。 當我將此確切代碼部署到我們的開發或測試服務器時,它工作正常。

我正在 Cassini 中調試它。 幫助將不勝感激,謝謝!

沙扎德·喬杜里

測試時是否禁用了 cookie? 我問是因為會話 ID 存儲在 cookie 中,除非您使用無 cookie 會話(罕見)。 因此,如果在您的測試環境中,您在瀏覽器中關閉了 cookie,那么它將無法獲取會話值。 我不相信它在存儲它們時會引發任何錯誤。

我想通了,這是一個愚蠢的錯誤。 更改發生在 Global.asax Application_Error 方法中。 出於某種原因,當我在那里放置斷點時,它不會命中。

本地調試時,只需在 web.config 中設置

<sessionState cookieless="true" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM