2015-01-13 36 views
0

我有一個Web窗體應用程序,我測試並在本地運行良好。 當我將它上傳到託管我的網站的Web服務器時,它通常只是註銷用戶(他們會被重定向到Account/Login.aspx頁面)。.net web窗體應用程序不斷註銷用戶

它不會在應用程序中產生錯誤,所以我不知道如何正確調試它,但我認爲它發生在頁面加載事件期間,因爲用戶在進行一些更改後有時會退出應用程序(並非總是) ,但變化保持不變。

我認爲由於某種原因,我的會話變量,保持用戶的登錄被重置。

如果你有一個想法或者在某個方向指向我什麼以及如何調查此問題,我將非常感激。

這是我的代碼,在我的網站Master.cs在頁面加載運行,也許它可以幫助:

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 
      if (Session["UserId"] == null) 
      { 
       Response.Redirect("~/Account/login.aspx"); 

      } 
      if (!Session["Role"].ToString().Equals("Coach")) 
      { 
       if (Session["Role"].ToString().Equals("Administrator")) 
        Response.Redirect("~/AdminForm/AdminHome.aspx"); 
       if (Session["Role"].ToString().Equals("User")) 
        Response.Redirect("~/Form/Progress.aspx"); 
      } 
     } 

    } 

謝謝!

+0

聽起來像會話超時問題。可能想看看你的web.config文件和/或它所託管服務器的IIS配置。 – user2366842

+1

不要使用會話進行身份驗證....這是非常不安全的,您會遇到類似這樣的問題,因爲IIS可以在感覺(丟失會話)時回收您的工作進程。你應該改用FormsAuthentication標記,並使用基於角色的訪問來控制授權 –

+0

Erik,謝謝你的回答。我將Session的身份驗證更改爲cookie,但仍有時會中斷。它不會將我重定向到登錄屏幕,而是具有Cookie的角色的主頁。例如,管理主頁是「AdminHome」。我點擊「AddUser」頁面,我有時會被重定向到「AdminHome」,但並非總是如此。你有一個想法是什麼可能導致它? – Dina

回答

0

您是否在web.config文件中設置了超時值?

system.web> 
    <authentication mode="Forms"> 
     <forms timeout="50000000" slidingExpiration="true"/> 
    </authentication> 
</system.web> 
+0

他沒有使用表單身份驗證,他使用會話變量來跟蹤他的用戶ID –

+0

明白了,快速閱讀問題並認爲它是表單。 –

0

如果您的用戶在該網站上超過20分鐘,它將註銷。你可以嘗試web.config或IIS設置,它不會幫助。

我發現處理這個問題的最佳方法是使用KeepAlive頁面和隱藏的iFrame,每隔18分鐘回發一次服務器。這將使工作進程保持運行,並且站點永遠不會超時。

由於最終用戶希望在站點8到5上登錄,因此我在內部面向站點上使用了此方法。

Sample project at this link