2012-02-20 61 views
0

我有一個生產系統,它有一個按鈕可以在不同的網站上引用系統。該按鈕調用Response.Redirect與查詢字符串只在第一次工作

Response.Redirect("https://www.???????.com/program/EditQuote.aspx?QuoteNumber=" & Trim(txtQuoteNum.Text), False) 

它完美的第一次,但在那之後(如果我關閉打開的標籤)的目標頁面出現與本應在加載的頁面幾乎所有的數據丟失該頁面的page_load事件。下面是在Page_Load事件

If Not IsPostBack Then 
    If Request.QueryString("QuoteNumber") IsNot Nothing AndAlso IsNumeric(Request.QueryString("QuoteNumber")) Then 
     Session("LoadQuoteNumber") = Request.QueryString("QuoteNumber") 
    End If 
End If 

代碼再次工作的唯一方法是,如果我關閉瀏覽器,然後重新啓動。它在本地主機上的開發機器上工作,所以我不知道如何嘗試跟蹤正在進行的調試,這種問題只發生在生產環境中。

+1

最初這聽起來像是生產系統上的會話問題。會話如何存儲在該服務器上? – 2012-02-20 22:56:50

+0

我怎麼知道?它是IIS 7. – nlehman 2012-02-20 23:05:32

+0

這裏是我發現真正快速的博客,討論每種類型的狀態服務器設置以及如何更改它們。 http://dotnetvault.blogspot.com/2008/07/configuring-session-state-settings-for.html。如果您使用InProc,會話數據將存儲在應用程序池進程的內存中,因此如果應用程序池重置,則會丟失會話內容。任何應用程序池重置都將記錄在事件日誌的「系統」部分中。看看那裏看你的應用程序池是否正在重置。 – 2012-02-20 23:10:28

回答

0

問題是下面的代碼這是在後面的代碼:

Private _refreshState As Boolean 
Private _isRefresh As Boolean 

Protected Overrides Sub LoadViewState(ByVal savedState As Object) 
    Dim AllStates As Object() = savedState 
    MyBase.LoadViewState(AllStates(0)) 
    _refreshState = Boolean.Parse(AllStates(1)) 
    _isRefresh = _refreshState = Session("__ISREFRESH") 
End Sub 

Protected Overrides Function SaveViewState() As Object 
    Session("__ISREFRESH") = _refreshState 
    Dim AllStates() As Object = New Object(2) {} 
    AllStates(0) = MyBase.SaveViewState 
    AllStates(1) = Not (_refreshState) 
    Return AllStates 
End Function 

它被放在解決當用戶刷新頁面,我們有一個問題。這裏給出的文章是代碼:http://www.codeproject.com/Articles/10240/Detecting-Page-Refresh