當前位置:首頁 » 操作系統 » aspnetsession資料庫

aspnetsession資料庫

發布時間: 2022-05-17 09:18:37

1. 如何把session存儲資料庫

aspnet中,session默認以inproc模式存儲,也就是保存在iis進程中,這樣有個優點就是效率高,但不利於為本負載均衡擴展。可以把session信息保存在sql
server中,據說,該種方式比起inproc性能損失為10%-20%。如何實現呢,主要分兩步介紹:
1、初始化sql
server中的狀態資料庫
asp.net
sql
server
提供注冊工具aspnet_regsql.exe,用於創建供
asp.net
中的
sql
server
提供程序使用的
microsoft
sql
server
資料庫。aspnet_regsql.exe位於
/%windir%/microsoft.net/framework/
/aspnet_regsql.exe
目錄下。如果麻煩,可以
直接用visual
studio
tools
的命令提示工具中直接輸入aspnet_regsql.exe使用。用法如下:
aspnet_regsql.exe

可以用如下的語法來添加默認session資料庫aspstate
aspnet_regsql.exe
-s
localhost
-u
sa
-p
why1234?
-ssadd
-sstype
p
-s,-u/-p
必須是大寫,分別表示資料庫伺服器,用戶名和密碼。
-ssadd
/
–ssremove
參數:
-ssadd表示是添加session資料庫,
-ssremove表示移除session資料庫.
創建自定義資料庫myappstate,可以用如下的語法:
aspnet_regsql.exe
-s
localhost
-u
sa
-p
why1234?
-ssadd
-sstype
c
-d
myappstate
2、配置webconfig
在webconfig的
節下添加如下配置:

如果在初始化資料庫的時候,創建了自定義資料庫可以用類似於如下的的配置:

通過以上兩步的設置,已經可以了。詳細情況請參閱msdn。

2. asp.netC#中如何將許可權寫入session

在你登陸時候要訪問資料庫,訪問時將許可權值順便一起讀出來。存到session中不就行了。要是在不同表中就建立一個視圖。

3. asp.net(c#)如何讀取資料庫中數據來驗證登陸的用戶和密碼是否正確

代碼如下:

string uname = this.txtUsername.Text; //得到登陸帳號

string pwd = this.txtPassword.Text; //得到登陸密碼

SqlConnection sqlCon = new SqlConnection(); //創建資料庫連接對象

//初始化該對象的連接字串

sqlCon.ConnectionString

ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;

sqlCon.Open(); //打開資料庫連接

SqlCommand sqlComGet = new SqlCommand(); //創建SqlCommand對象

sqlComGet.Connection = sqlCon; //用sqlCon初始化SqlCommand對象

sqlComGet.CommandText = "select * from TUser where UserName='" + uname + "' and UserPwd='" + pwd + "'";

SqlDataReader sqlDr = sqlComGet.ExecuteReader(); //創建SqlDataReader對象

if (sqlDr.Read()) //帳號和密碼正確

{ Session["UserID"] = sqlDr["UserID"];

Session["UserEmail"] = sqlDr["UserEmail"];

Session["UserName"] = uname; //用Session記錄帳號

Session["UserPwd"] = pwd; //用Session記錄密碼

Response.Redirect("Default.aspx");

}

else //帳號或密碼錯誤

{

this.lblResults.Text="您輸入的用戶名或密碼不正確!";

}

sqlCon.Close();

4. asp.net session問題

;Integrated Security=SSPI 當前用戶沒有許可權登陸 SQL.

data source=ST-SERVICE;initial catalog=OrganizationalStructure;persist security info=True;user id=sa;password=da

5. aspnet session值頻繁丟失

可能導致丟失的情況,是因為應用程序池重啟。如果是共享的主機,一般對CPU使用率等資源有限制,超過限制會強行回收應用程序池導致session丟失。關於這個,需要咨詢主機提供商。 其次,SessionID經常變化也有可能是因為程序有錯誤,導致.net工作進程(w3wp.exe)頻繁退出重新啟動。再者,如果你並沒有在Session中保存東西,那麼SessionID每次訪問都是不一樣的,因為如果不保存東西,那麼為了優化性能,ASP.net默認會自動釋放Session。 Session丟失是個比較麻煩的問題,建議檢查伺服器的工作狀態和程序設計。

6. asp.net(c#)如何讀取資料庫中數據來驗證登陸的用戶和密碼是否正確

1、使用的ASP.NET(c#)代碼開發語言里頭的正則表達式Regex對象,它有一個IsMatch方法用於專門驗證正則表達式。

7. session在伺服器是怎麼存儲的,一般以文件形式寸還是存資料庫

我們一般用的Session可以基於Cookies和Cookieless,前者是將身份標識放在Cookies裡面,後者是跟在Url里作為get傳遞的參數..我們普遍用的前者
第1個問題,你賦值一個Session,
此時這個Session對應的值是存在伺服器端,客戶端無法直接獲取這個值的..每個Session對象都有一個SessionID的屬性,表明了該Session的唯一性,客戶端會生成1個名稱為AspNetSessionId(ASP.NET環境下大概是這個,你可以在FireFox的Cookies列表中查看到)的Cookies,和伺服器端的SessionID對應,伺服器端只有接受到這個Cookies的值才能判斷該瀏覽者對應於哪個Session..所以你第1個問題就回答完了.
第2個問題,過了超時時間才會失效,伺服器端永遠不會主動去聯系客戶端看對方是否超時,只是創建Session對象時會有一個過期時間,超過過期時間對應的客戶端還沒有訪問,則會清空Session對象..至於你說的不同瀏覽器的問題,暫時沒遇到過

8. Session到底是保存在客戶端還是伺服器端

Session存儲在伺服器的內存中。

瀏覽器第一次訪問伺服器會在伺服器端生成一個session,有一個sessionid和它對應。它存儲在伺服器的內存中,tomcat的StandardManager類將session存儲在內存中,也可以持久化到file,資料庫,memcache,Redis等。

客戶端只保存sessionid到cookie中,而不會保存session,session銷毀只能通過invalidate或超時,關掉瀏覽器並不會關閉session。



session機制

session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。

當程序需要為某個客戶端的請求創建一個session時,伺服器首先檢查這個客戶端的請求里是否已包含了一個session標識——稱為session id,如果已包含則說明以前已經為此客戶端創建過session,伺服器就按照session id把這個session檢索出來使用(檢索不到,會新建一個)。

如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個與此session相關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字元串,這個session id將被在本次響應中返回給客戶端保存。

以上內容參考 網路--session(計算機術語)

9. c#,asp.net,mysql,關於登錄狀態與資料庫標識欄位的設置。

可以利用session.
正常情況下,在客戶端用ajax與伺服器交互,確認用戶在線狀態.
在頁面把session設置稍微短些.(默認20分鍾太長了),比如5分鍾.
在客戶端頁面用ajax每隔一分鍾就確認一下在線狀態.
如果超過5分鍾沒有確認(相差的幾分鍾可以防止網路不穩定),session就abort掉.
同時設置用戶不在線
這樣記錄誤差也就在5分鍾.
當然如果你確定你的伺服器性能好,可以更短些

10. asp.net設置session時間無效

超時不僅取決於Session.Timeout、web.config,還取決於伺服器iis的設定
iis默認為7200秒.

web.config關於sessionState節點的配置方案,sessionState有四種模式:off,inProc,StateServer,SqlServer。

1、off模式

從字面上就可以看出這個是關閉模式,如果當前頁面不需要session的值,為了減少伺服器資源,你可以去掉Session的開銷。

<sessionState mode="off">或者頁面上

<%@ Page EnableSessionState="false" %>來關閉Session。

2、inProc模式(預設模式)

它允許「無Cookie」的會話,以及在伺服器之外存儲
會話數據。ASP.NET會話狀態模塊在Web.config文件中像下面這樣配置:

<sessionState mode="InProc" cookieless="false" timeout="20" />

在這個例子中,mode屬性設為InProc(默認值),表明會話狀態要由ASP.NET存儲到內存中,而且
不用Cookie來傳遞會話ID。採取這種方式,不管Cookie還是隱藏表單欄位都用不著了。
所以,即使網頁中沒有使用表單,也能加入會話。 但是這種方法,應用程序的狀態將依賴於 ASP.NET進程, 當IIS進程崩潰或者正常重啟時,保存在
進程中的狀態將丟失。

3、StateServer會話管理mos

將mode屬性設為StateServer,也就是將會話數據存儲到單獨的內存緩沖區中,再由單獨一台機器上運行

的Windows服務來控制這個緩沖區。狀態服務全稱是「ASP.NET State Service 」(aspnet_state.exe),計算機管理-服務 裡面即可看到此服務,啟動該服務j

它由Web.config文件中的stateConnectionString屬性來配置。該屬性指定了服務所在的伺服器,以及要監

視的埠:
<sessionState mode="StateServer"
stateConnectionString="tcpip=myserver:42424"
cookieless="false" timeout="20" />

在這個例子中,狀態服務在一台名為myserver的機器的42424埠(默認埠)運行。要在伺服器上改變

埠,可編輯HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state注冊表項中的Port值。

顯然,使用狀態服務的優點在於進程隔離,並可在Web farm中共享。 使用這種模式,會話狀態的存儲將不

依賴於iis進程的失敗或者重啟,然而,一旦狀態服務中止,所有會話數據都會丟失。換言之,狀態服務不

像SQL Server那樣能持久存儲數據;它只是將數據存儲在內存中。

4 用SQL Server進行會話管理

ASP.NET還允許將會話數據存儲到一個資料庫伺服器中,方法是將mode屬性變成SqlServer。
在這種情況下,ASP.NET嘗試將會話數據存儲到由sqlConnectionString屬性(其中包含數據源以及登錄服

務器所需的安全憑證)指定的SQL Server中。
為了用恰當的資料庫對象來配置SQL erver,管理員還需要創建ASPState資料庫,
方法是運行WinDir\Microsoft.Net\Framework\Version文件夾中的InstallState.sql腳本(WinDir是服務

器的Windows文件夾,而Version是你使用的.NET框架版本的安裝文件夾)。
要配置SQL伺服器,可以在命令行中運行SQL Server 提供的命令行工具osql.exe

osql -S [ server name] -U [user] -P [password] <InstallSqlState.sql
例如
osql -S (local)\NetSDK -U sa -P "" -i InstallSqlState.sql

在這里用戶名必須是SQL伺服器上的sa帳號,或者具有同等許可權的其他帳號。有興趣的讀者可以打開
這個腳本文件來了解ASP.NET是如何和SQL Server配合實現狀態管理的。
卸載這些表和存儲過程,可以使用UninstallSqlState.sql腳本,使用方法與上面類似。做好必要的資料庫准備工作後,將web.config 文件中的sessionstate 元素的mode改為"sqlserver"
,並且指定SQL連接字元串。具體如下:

mode="sqlserver"
sqlConnectionString="data source=127.0.0.1; userid=sa; password="

配置好SQL Server後,應用程序代碼運行時就和InProc模式沒有什麼區別。但要注意的是,由於數據不存儲在本地內存,所以存儲會話狀態的對象需要進行序列化和反序列化,以便通過網路傳給資料庫伺服器,以及從資料庫伺服器傳回。這當然會影響性能。通過在資料庫中存儲會話狀態,可分別針對擴展性及可靠性來有效地平衡性能。另外,可以利用SQL Server的集群,使狀態存儲不依賴於單個的SQL Server, 這樣就可以為應用程序提供極大限度的可靠性。

熱點內容
java的基本結構 發布:2024-10-11 15:12:24 瀏覽:730
大眾suv哪個內部配置好 發布:2024-10-11 14:30:39 瀏覽:93
緩存到資料庫失敗 發布:2024-10-11 14:27:44 瀏覽:678
我的世界手機國際怎麼創建伺服器 發布:2024-10-11 13:45:46 瀏覽:420
svnlinux命令 發布:2024-10-11 13:35:54 瀏覽:234
ig加密語音 發布:2024-10-11 12:19:25 瀏覽:487
釘圖上傳 發布:2024-10-11 12:11:27 瀏覽:479
腳本個 發布:2024-10-11 12:10:43 瀏覽:151
剛性攻絲的編程 發布:2024-10-11 12:10:39 瀏覽:469
怎麼登錄安卓版全民tv 發布:2024-10-11 12:10:33 瀏覽:624