扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁(yè) 軟件開發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> .Net技術(shù) >> 文章正文

如何利用SQL Server進(jìn)行會(huì)話狀態(tài)session的保持

      在調(diào)用服務(wù)器后要繼續(xù)在服務(wù)器中保留數(shù)據(jù)通常很難,你可以用SQL Server來進(jìn)行會(huì)話狀態(tài)管理(用戶會(huì)話數(shù)據(jù))。以下教你怎樣用它來進(jìn)行管理。 新疆軟件開發(fā)網(wǎng)搜集整理
在頁(yè)面開發(fā)中,在服務(wù)器調(diào)用里保留數(shù)據(jù)是一個(gè)常見的不好解決的難題。你也許需要為你的應(yīng)用程序或特殊用戶的會(huì)話保存信息。存儲(chǔ)這樣的數(shù)據(jù)被稱為狀態(tài)管理,ASP.NET為你提供了一些方法,這些方法能讓你通過各種途徑完成這一任務(wù)。這包括將數(shù)據(jù)存儲(chǔ)在一個(gè)狀態(tài)服務(wù)器的內(nèi)存中,或者通過Microsoft SQL服務(wù)器。本文主要討論了用SQL服務(wù)器來進(jìn)行會(huì)話狀態(tài)管理(用戶會(huì)話數(shù)據(jù))。
為什么需要進(jìn)行狀態(tài)管理?
 
在設(shè)置和使用SQL Server之前,你也許會(huì)想有必要這樣做嗎?頁(yè)面開發(fā)還有更讓人煩惱的一面,那就是HTTP是一項(xiàng)無狀態(tài)協(xié)議。它的運(yùn)行是斷斷續(xù)續(xù)的,每個(gè)頁(yè)面都會(huì)按接受到的命令運(yùn)行。命令執(zhí)行完以后,所有用過的數(shù)據(jù)都會(huì)丟失。服務(wù)器不會(huì)存儲(chǔ)關(guān)于那些調(diào)用的任何記憶。也就是說,它不會(huì)存儲(chǔ)相關(guān)記憶,除非有特殊的指令讓它存儲(chǔ)。
會(huì)話變量
以下是使用會(huì)話變量的格式:
C#: Session["variable_name"] = value; 
VB.NET: Session("variable_name") = value 
當(dāng)這個(gè)值被存儲(chǔ)了,用戶就可以在整個(gè)會(huì)話中使用它了。會(huì)話結(jié)束后,變量也就丟失了。你也可以使用回歸狀態(tài)管理(這是我們下一次要討論的話題)來處理這些丟失的值。
ASP.NET狀態(tài)管理
ASP.NET允許你通過一個(gè)狀態(tài)服務(wù)器或SQL服務(wù)器將會(huì)話數(shù)據(jù)存儲(chǔ)在內(nèi)存中。存儲(chǔ)的位置由應(yīng)用程序的頁(yè)面配置文件來決定。狀態(tài)管理選項(xiàng)是在系統(tǒng)中的sessionState元素中,頁(yè)面元素是在狀態(tài)管理中進(jìn)行設(shè)置的。以下的示例顯示了怎樣使用SQL Server:
<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;user id=username;password=password"
cookieless="false"
timeout="20" /> 
注意,這些元素的名稱和屬性都要區(qū)分大小寫。以下是該模式屬性的各種可能值:
• InProc-存儲(chǔ)在內(nèi)存中。它的運(yùn)行速度最快,但是當(dāng)ASP.NET程序重復(fù)運(yùn)行的時(shí)候所有的數(shù)據(jù)都會(huì)丟失。
• SQL Server-將數(shù)據(jù)存儲(chǔ)在SQL Server中。由于它與頁(yè)面服務(wù)器是分離的,因此它是最可信的。連接字符串會(huì)按照正常的順序排列,以連接到SQL Server數(shù)據(jù)庫(kù)中。
• StateServer-將數(shù)據(jù)存儲(chǔ)在一個(gè)獨(dú)立的頁(yè)面服務(wù)器上(IIS)。這一選項(xiàng)利用了stateConnectionString這一屬性。
所有的選項(xiàng)都使用保留。 cookieless屬性會(huì)告知用戶那些cookies是被存儲(chǔ)在內(nèi)存(虛擬的)中還是保留在Querystring/URL(真實(shí)的)中。timeout屬性則會(huì)告知用戶會(huì)話變量被存儲(chǔ)的時(shí)間(沒有接受任何命令)的長(zhǎng)短。
 
設(shè)置 SQL Server
 
SQL Server需要一個(gè)特殊的數(shù)據(jù)庫(kù)來進(jìn)行狀態(tài)管理。幸好.NET Framework安裝包括了必備的文件,這些文件可以讓它啟動(dòng)并立即運(yùn)行。以下的腳本都安裝了:
• InstallPersistSqlState.sql-包括建立數(shù)據(jù)庫(kù)的腳本,這個(gè)數(shù)據(jù)庫(kù)是持久狀態(tài)管理中要用到的。
• UninstallPersistSqlState.sql-包括卸載持久狀態(tài)管理的腳本。
• UninstallSqlState.sql-包括卸載狀態(tài)管理的腳本。
這些腳本可能會(huì)從Query Analyzer中或通過使用isql.exe命令來運(yùn)行。要進(jìn)行狀態(tài)管理的話,需要運(yùn)行InstallSqlState.sql。腳本的結(jié)果是由一個(gè)名為ASPState的數(shù)據(jù)庫(kù)創(chuàng)建出來的。它會(huì)處理會(huì)話變量的存儲(chǔ)和保留問題。你可以通過一個(gè)簡(jiǎn)單的例子來測(cè)試其功能性。
 
下面的C#例子包括了將一個(gè)含有會(huì)話變量的頁(yè)面格式變成另一種可以顯示值的頁(yè)面格式:
<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML><HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
</HEAD>
<body MS_POSITIONING="GridLayout">
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e) {
Session["FirstName"] = "Tony";
Session["LastName"] = "Patton";
Session["Site"] = "Builder.com";
Response.Redirect("WebForm2.aspx", true);
}
</script></body></HTML> 
Here's the second Web form: 
<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML><HEAD><title>WebForm2</title></HEAD>
<body>
<script language="C#" runat="server">
private readonly string newLine = "<br>";
private void Page_Load(object sender, System.EventArgs e) {
Response.Write(Session["FirstName"].ToString() + " ");
Response.Write(Session["LastName"].ToString() + newLine);
Response.Write(Session["Site"].ToString() + newLine);
}
</script></body></HTML> 
如果你是用VB.NET 進(jìn)行開發(fā),頁(yè)面的格式就是下面這樣的:
<%@ Page Language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>WebForm1</title></head><body>
<script language="vb" runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Session("FirstName") = "Tony"
Session("LastName") = "Patton"
Session("Site") = "Builder.com"
Response.Redirect("WebForm2.aspx", true)
End Sub
</script></body></html> 
Here's the Page_Load event on the second form: 
<%@ Page Language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>WebForm2</title></head><body>
<script language="vb" runat="server">
Private ReadOnly newLine As String = "<br>"
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Response.Write(Session("FirstName").ToString() + " ")
Response.Write(Session("LastName").ToString() + newLine)
Response.Write(Session("Site").ToString() + newLine)
End Sub
</script></body></html> 
關(guān)于卸載狀態(tài)管理功能的一個(gè)注釋:微軟建議在執(zhí)行卸載腳本以前先取消World Wide Web Publishing服務(wù)。你可以在命令行輸入net stop w3svc命令來完成這一步。你可以用net start w3svc命令重啟機(jī)器。
 
你可以在SQL Server中檢測(cè)tempdb數(shù)據(jù)庫(kù),這樣你就可以毫不費(fèi)力地看到會(huì)話管理屬性是怎樣運(yùn)行的。它使用兩個(gè)臨時(shí)表格來進(jìn)行會(huì)話管理:ASPStateTempApplications和 ASPStateTempSessions.
 
一種可行的選擇
 
如果你擔(dān)心會(huì)由于 Web服務(wù)器停止運(yùn)行而失去會(huì)話狀態(tài)數(shù)據(jù)的話,SQL Server是一種很好的選擇。不過由于數(shù)據(jù)庫(kù)的交互作用,它的性能也許會(huì)受些影響,但是它還是最值得的信賴的而又可行的方法

作者:未知 | 文章來源:網(wǎng)絡(luò) | 更新時(shí)間:2007-12-9 13:47:08

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    搜集整理的asp.net的驗(yàn)證方式大全session
    asp,net軟件結(jié)構(gòu)設(shè)計(jì)和相關(guān)的安全性問題
    如何解決Menu菜單被frame遮擋以及iframe自適應(yīng)的問題
    Orcale與Asp.net的端口沖突解決方法
    在SQL Server中幾種導(dǎo)入/導(dǎo)出數(shù)據(jù)的方式
    在SQL Server中如何利用范圍連接來查找
    ASP.NET 2.0之Memebership擴(kuò)展應(yīng)用解決方案
    管理SQL Server 常用的SQL和T-SQL語(yǔ)句整理
    數(shù)據(jù)庫(kù)設(shè)計(jì)-數(shù)據(jù)庫(kù)的三級(jí)模式
    ASP.NET中如何使用unsafe選項(xiàng)
    軟件技術(shù)
    · 開發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開發(fā)
    最新文章  
    ·.net技術(shù) asp.net MVC3 Vi
    ·.net將視頻文件格式轉(zhuǎn)換成
    ·NET Framework 2.0 Servic
    ·如何動(dòng)態(tài)修改winform的app
    ·asp,net軟件結(jié)構(gòu)設(shè)計(jì)和相關(guān)
    ·學(xué)習(xí)怎樣使用ASP.NET中的虛
    ·,net基礎(chǔ)類的學(xué)習(xí):system
    ·.net學(xué)習(xí):c#事件的深入分
    ·Facade Pattern學(xué)習(xí)總結(jié)
    ·C#如何設(shè)置或者獲取目錄的
    ·如何使用XSL來定義ASP.NET
    ·理解WCF Data Contract契約
    ·如何能在.net2.0開發(fā)的控件
    ·模式怎樣使用,講解模式的
    ·如何解決Menu菜單被frame遮
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    正宁县| 兴义市| 宾阳县| 莲花县| 湘阴县| 临湘市| 绥宁县| 四子王旗| 尚义县| 滨州市| 金川县| 江安县| 大方县| 防城港市| 治多县| 临武县| 合川市| 乐山市| 苍梧县| 龙江县| 肥西县| 正镶白旗| 南开区| 句容市| 南涧| 宁明县| 尼玛县| 犍为县| 循化| 乌兰察布市| 瓦房店市| 沙雅县| 顺昌县| 石渠县| 太湖县| 加查县| 乃东县| 海晏县| 嘉鱼县| 望谟县| 汶川县|