2009-01-27 131 views
0

爲了簡單起見,後調用一個額外的aspx頁面,我們有一些aspx頁面...ASP.NET頁面加載

Page1.aspx的 - 復位會話信息。
Page2.aspx - 用結果搜索表單並設置會話變量。
Page3.aspx,Page4.aspx,Page5.aspx - 需要會話變量上Page2.aspx

設置

我們現在發現的是,作爲Page2.aspx加載並設置會話變量,Page1.aspx的是被召喚並重設會議。但是,Page1.aspx顯示在瀏覽器中,而不是Page2.aspx。當我們逐步瀏覽代碼時,我們才發現這種情況,並且在Page1.aspx和Page2.aspx的Page_Load事件中放置了斷點,並且很驚訝地發現Page2.aspx在Page1.aspx停止處理服務器。

可能有用的信息...我們使用母版頁,並且在母版頁中有鏈接到Page1.aspx。除此之外,我在代碼庫中找不到任何對Page1.aspx的引用。

更新:
這可能是由於驗證?看來,當我訪問Page2.aspx時,服務器可能再次對Page1.aspx進行身份驗證?這是典型的嗎?

+0

請張貼一些代碼,以便我們更好地理解問題。 – Eppz 2009-01-27 20:00:29

回答

1

感謝您的提示安德魯。

我們弄清楚發生了什麼......應用程序中的Page1.aspx實際上是Default.aspx。在Page2.aspx上,另一位開發人員在沒有定義src屬性的頁面上放置一個img標籤。因此,當Page2.aspx執行時,它正在尋找位於網站根級別的圖像,然後觸發Default.aspx(Page1)上的代碼並清除會話。

整體而言,這看起來是這樣的......

在Page2.aspx

<img src=""> <!-- this ended up triggering a call to Default.aspx, wiping the session --> 

希望幫助了別人。

0

啓動Fiddler並正常運行應用程序。它會告訴你正在發生的流量,並確定哪些頁面正在重定向到其他頁面。一旦你知道了路徑,你可以通過調查源代碼來確定爲什麼這條路徑存在。

您的應用程序域可能被回收,因此,所有的會話變量都會丟失,如果會話變量丟失,您可能有代碼重定向訪問者,對不對?

如果是這種情況,作爲快速修復,您可以使用StateServer或將會話變量存儲在Sql Server中。您的應用程序域不應該每分鐘都在回收,但如果您正在將會話存儲爲「默認」,則可能會導致您看到的行爲。