簡體   English   中英

ASP.NET中的SQL Server會話狀態

[英]SQL Server session state in ASP.NET

我有一個托管在共享托管服務器上的網站。 當前,我正在使用進程內會話狀態,但是遇到諸如每次更改代碼(通常在App_Code注意到)之類的問題,會話中斷並且用戶注銷。 我有一些疑問:

  1. 有什么可以幫助我防止在更改代碼時丟失會話的東西嗎?
  2. 如果這是正常行為,那么切換到SQL Server會話狀態又如何呢?
  3. 我可以在共享托管服務器上配置它嗎? 將采取什么步驟?
  4. 我是否可以使用普通的Session對象訪問Session還是需要采用通常的數據庫連接方式?

我嘗試使用aspnet_regsql命令在本地計算機上對其進行配置,並為托管服務器提供了數據庫IP。 它成功完成,但是當我對web.config文件進行更改時,它不起作用。

這些是我對web.config更改:

<sessionState
   mode="SQLServer"
   sqlConnectionString="data source=[DB IP];user id=username;password=password;initial catalog=[db name on production]"
/>

我在這里做錯什么嗎?

檢查會話狀態模式http://msdn.microsoft.com/zh-cn/library/vstudio/ms178586%28v=vs.100%29.aspx

您需要使用“進行中”以外的其他東西。

在共享托管方面-我只擁有Discountasp.net的經驗,並且正在使用sql server會話狀態,沒有任何問題。 它需要另一個數據庫,但是運行良好。

我也猜你必須使用:

allowCustomSqlDatabase="true"

在您的Web配置中,會話的數據庫名稱與默認名稱不同。

檢查此http://msdn.microsoft.com/en-us/library/h6bb9cz9%28v=vs.90%29.aspx

我真的只能回答你的第一個問題:

“1。是否有什么可以幫助我防止在更改代碼時丟失會話?”

令人討厭的是,無能為力。 一旦您“反彈”網站(例如,修改web.config),您將導致所有會話結束,並且由於丟失了刪除登錄數據,每個人都被注銷了。

聽起來您最好將其更改為使用FormsAuthentication(這是MVC.NET代碼,但該代碼對於其他asp.net應用程序仍然有效),因為它在代碼更改之間是穩定的,例如

using System.Web.Security;

public function ActionResult Login(LoginModel model)
{
    var password = FormsAuthentication.HashPasswordForStoringInConfigFile(model.Password 
    + System.Configuration.ConfigurationManager.AppSettings["salt"].ToString(), "sha1");

    if (new UserService().Login(model.EmailAddress, password))
    {
        FormsAuthentication.RedirectFromLoginPage(model.EmailAddress, true);
    }
}

使用FormsAuthentication將意味着您的用戶將被asp.net土地“記住”,並且更改web.config不會殺死他們的登錄會話。

如果您使用此方法,但仍希望在用戶關閉瀏覽器時注銷用戶,則可以在上面登錄時設置一個會話cookie,這是一個標准會話cookie,而不是隨代碼變化而變化的會話變量。 當用戶關閉瀏覽器時,該cookie將被瀏覽器殺死。 Cookie可以很簡單,例如“ loggedIn:yes”。 該cookie以及對FormsAuthentication Identity值的檢查,例如

if(!HasLoginCookie() || !System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
   // redirect user to log in page.
}

然后,如果該Cookie被刪除,則會注銷用戶。 在經過一定時間的不活動之后,FormsAuthentication也將自動注銷,這增加了額外的安全性。 希望這可以幫助。

暫無
暫無

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

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