日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Asp.Net Session学习总结

發(fā)布時(shí)間:2025/4/14 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Asp.Net Session学习总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ASP.NET 中的 Session 怎么正確使用

https://www.cnblogs.com/ideacore/p/6423281.html

Session對(duì)象用于存儲(chǔ)從一個(gè)用戶開(kāi)始訪問(wèn)某個(gè)特定的aspx的頁(yè)面起,到用戶離開(kāi)為止,特定的用戶會(huì)話所需要的信息。用戶在應(yīng)用程序的頁(yè)面切換時(shí),Session對(duì)象的變量不會(huì)被清除。?
對(duì)于一個(gè)Web應(yīng)用程序而言,所有用戶訪問(wèn)到的Application對(duì)象的內(nèi)容是完全一樣的;而不同用戶會(huì)話訪問(wèn)到的Session對(duì)象的內(nèi)容則各不相同。 Session可以保存變量,該變量只能供一個(gè)用戶使用,也就是說(shuō),每一個(gè)網(wǎng)頁(yè)瀏覽者都有自己的Session對(duì)象變量,即Session對(duì)象具有唯一性。?

最近這兩天被一個(gè)Web Farm環(huán)境下的Session處理問(wèn)題虐得很痛苦,這是一個(gè)ASP.NETSession基礎(chǔ)知識(shí)的一個(gè)合集,有的地方感覺(jué)是有重復(fù),比較啰嗦,我基本上按照原文將他翻譯出來(lái)了,小弟程序水平不高,英語(yǔ)水平更差(09年高考英語(yǔ)65分,滿分150),自我感覺(jué)Session基礎(chǔ)內(nèi)容是講清楚了,我粗淺的理解下,沒(méi)有發(fā)現(xiàn)有什么錯(cuò)誤了,文章較淺,請(qǐng)各位發(fā)現(xiàn)有什么不對(duì)的地方告訴我,我一定盡快處理,這篇文章很適合初學(xué)者看,作者說(shuō)的很清楚,能把ASP.NET下Session的玩法看得較為清晰。另外我會(huì)在我另一篇博文中將我所遇到的問(wèn)題以及解決辦法和大家共享。原文地址:http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net

這篇文章將使你非常好地理解Session,在這篇文章中,我會(huì)包含Session的基礎(chǔ)知識(shí),用不同的方式儲(chǔ)存Session對(duì)象,包含Web園(Web Farm)和Web農(nóng)場(chǎng)(Web Garden)以及負(fù)載均衡等等情境。我也將詳細(xì)闡明Session在實(shí)際生產(chǎn)環(huán)境中的應(yīng)用。希望您能喜歡這篇文章,歡迎您反饋您的看法和建議。

什么是Session

Web是無(wú)狀態(tài)的,他提供了一種新的方式:每次都通過(guò)用戶對(duì)服務(wù)器提交請(qǐng)求而渲染新的網(wǎng)頁(yè)。眾所周知,HTTP是一種無(wú)狀態(tài)協(xié)議,他不能通過(guò)頁(yè)面和客戶端保持連接。如果用戶需要增加一些信息和跳轉(zhuǎn)到了另外的頁(yè)面,原有的數(shù)據(jù)將會(huì)丟失,用戶將無(wú)法恢復(fù)這些信息。我們需要這玩意兒干嘛呢?我們需要保存信息!Session提供了一個(gè)在服務(wù)器端保存信息的方案。他能支持任何類型對(duì)象和用戶對(duì)象信息作為對(duì)象保存起來(lái)。Session為每一個(gè)客戶端都獨(dú)立地保存,這意味著Session數(shù)據(jù)存儲(chǔ)著每個(gè)客戶端的基礎(chǔ)信息。請(qǐng)看下圖:

每一個(gè)客戶端都有一份獨(dú)立的Session

用Session進(jìn)行狀態(tài)管理是ASP.NET最好的特性之一,因?yàn)樗前踩?#xff0c;對(duì)于客戶端是透明的,并且他能存儲(chǔ)任何類型的對(duì)象。而在這些優(yōu)點(diǎn)之外,有時(shí)Session會(huì)導(dǎo)致一些對(duì)性能要求較高的網(wǎng)站的性能問(wèn)題。因?yàn)樗姆?wù)器的內(nèi)存存儲(chǔ)用戶訪問(wèn)網(wǎng)站所需的數(shù)據(jù),現(xiàn)在讓我們來(lái)看一看Session對(duì)于您Web 應(yīng)用的利弊。

Session的利弊

接下來(lái)我們討論普通情況下使用Session的利弊,我會(huì)描述每一種Session的使用情境。

優(yōu)點(diǎn):

他能在整個(gè)應(yīng)用中幫助維護(hù)用戶狀態(tài)和數(shù)據(jù)。

他能讓我們簡(jiǎn)單地實(shí)現(xiàn)存儲(chǔ)任何類型的對(duì)象。

獨(dú)立地保存客戶端數(shù)據(jù)。

對(duì)于用戶來(lái)說(shuō),Session是安全的、透明的。

缺點(diǎn):

因?yàn)镾ession使用的是服務(wù)器的內(nèi)存,所以在用戶量大的時(shí)候會(huì)成為性能瓶頸。

在序列化和反序列化的過(guò)程中他也會(huì)成為性能瓶頸,因?yàn)樵赟tateServer(狀態(tài)服務(wù))模式和sql server模式下我們需要對(duì)我們存儲(chǔ)的數(shù)據(jù)進(jìn)行序列化和反序列化我們所存儲(chǔ)的數(shù)據(jù)。

除此之外,Session的各種模式都有其利弊。接下來(lái)我們將討論各種Session模式。

對(duì)Session進(jìn)行讀/寫

讀/寫Session是非常簡(jiǎn)單的,就像使用ViewState一樣,我們能使用System.Web.SessionState.HttPSessionState這個(gè)類來(lái)與Session進(jìn)行交互,這個(gè)類在ASP.NET頁(yè)面內(nèi)內(nèi)建(提供)了Session。下面的代碼就是使用Session進(jìn)行存儲(chǔ)的例子:

//Storing UserName in Session<br>Session["UserName"] = txtUser.Text;
接下來(lái)讓我們來(lái)看如何從Session讀取數(shù)據(jù):

//Check weather session variable null or not<br>if (Session["UserName"] != null)<br>{<br>  //Retrieving UserName from Session
? ? lblWelcome.Text = "Welcome : " + Session["UserName"];<br>}else<br>{<br>  //Do Something else<br>}
我們也能存儲(chǔ)其他對(duì)象,下面的例子展示了如何存儲(chǔ)一個(gè)DataSet到Session里

//Storing dataset on Session<br>Session["DataSet"] = _objDataSet;
下面的代碼展示了如何從Session內(nèi)讀取DataSet

//Check weather session variable null or not
if (Session["DataSet"] != null)
{
? ? //Retrieving UserName from Session
? ? DataSet _MyDs = (DataSet)Session["DataSet"];
}
else{
? ? //Do Something else
}
參考文獻(xiàn):

MSDN (read the session variable section)

Session ID

ASP.NET使用了120bit的標(biāo)識(shí)符用以標(biāo)識(shí)每個(gè)Session。這是足夠安全的、不可逆的設(shè)計(jì)。當(dāng)客戶端和服務(wù)端進(jìn)行通信的時(shí)候,在他們之間需要傳輸這個(gè)Session ID,當(dāng)客戶端發(fā)送request(請(qǐng)求)數(shù)據(jù)時(shí),ASP.NET搜索Session ID,通過(guò)Session ID檢索數(shù)據(jù)。這個(gè)過(guò)程通過(guò)以下步驟進(jìn)行:

客戶端點(diǎn)擊網(wǎng)站->客戶端信息被Session儲(chǔ)存

服務(wù)端為客戶端創(chuàng)建一個(gè)唯一的Session ID,并在服務(wù)端存儲(chǔ)這個(gè)ID

客戶端通過(guò)發(fā)送帶有SessionID的請(qǐng)求以獲取在服務(wù)端保存的信息

服務(wù)器端通過(guò)Session Provider從狀態(tài)服務(wù)(State Server)中獲取序列化后的數(shù)據(jù)并且進(jìn)行類型強(qiáng)制轉(zhuǎn)換成對(duì)象

以下為流程圖片:

客戶端、Web服務(wù)器、Session Provider的通信

參考文獻(xiàn):

SessionID in MSDN

Session模式和Session Provider

在ASP.NET中,有以下幾種Session模式可以使用

InProc

StateServer

SQLServer

Custom

每一種Session State都有一種Session Provider。以下的圖形將展示他們的關(guān)系:

Session state體系圖

我們能在這些基礎(chǔ)的Session State Provider中進(jìn)行選擇。當(dāng)ASP.NET接收到帶有Session ID的信息請(qǐng)求時(shí)Session State和他相應(yīng)的Provider負(fù)責(zé)提供和存儲(chǔ)對(duì)應(yīng)的信息。下面的表展示了Session 模式以及Provider的名稱:

Session State模式?? ?State Provider
InProc?? ?In-memory object(內(nèi)置對(duì)象)
StateServer?? ?Aspnet_state.exe
SQLServer?? ?SQL Server Database
Custom?? ?Custom provider
除此之外,還有另一個(gè)模式:“OFF”,如果我們選擇這個(gè)選項(xiàng),Session將不能為這個(gè)應(yīng)用提供服務(wù)。但是我們的目標(biāo)是使用Session,所以我們將討論上面四種的Session模式。

Session States

Session State模式基本上可以認(rèn)為把所有的Session配置、維護(hù)都交給了Web應(yīng)用。Session State他本身就是一個(gè)大東西,他基本上意味著你所有關(guān)于Session 的配置無(wú)論實(shí)在web.config或者頁(yè)面后端代碼。在web.config里元素被用作Session的配置。在元素中可以配置的有Mode(模式),Timeout(超時(shí)),StateConnectionString(State連接字符串),CustomProvider(自定義的Provider)等等。我們已經(jīng)討論過(guò)了每個(gè)部分的連接字符串在我們討論Session mode之前,接下來(lái)我們簡(jiǎn)述以下Session的一些事件:

Session事件

在ASP.NET中有兩個(gè)可以使用的Session事件:

Session_Start

Session_End

你能處理應(yīng)用中的這兩個(gè)事件在global.asax這個(gè)文件里,當(dāng)一個(gè)新的Session開(kāi)啟時(shí)session_start事件被觸發(fā),當(dāng)Session被回收或是過(guò)期時(shí)Session_End被觸發(fā):

void Session_Start(object sender, EventArgs e)
{
? ? // Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e){
? ? // Code that runs when a session ends.
}
參考文獻(xiàn):

Application and Session Events

Session 模式

我們已經(jīng)討論過(guò)Session模式,接下來(lái)說(shuō)說(shuō)這些模式的不同:

Off

InProc

StateServer

SQLServer

Custom

如果我們?cè)趙eb.config內(nèi)設(shè)定Session Mode=”off”,Session將在應(yīng)用中不可用,他的設(shè)置是這樣的:

InProc Session 模式:

這是ASP.NET默認(rèn)的Session模式,他在當(dāng)前的應(yīng)用程序域中存儲(chǔ)Session信息。這是性能最好的Session模式。但是他最大的缺點(diǎn)在于:當(dāng)我們重啟服務(wù)的時(shí)候Session數(shù)據(jù)將會(huì)丟失。InProc模式有一些優(yōu)缺點(diǎn),接下來(lái)我們將詳細(xì)這些點(diǎn)。

InProc概述:

我們已經(jīng)說(shuō)過(guò),InProc模式Session數(shù)據(jù)將會(huì)儲(chǔ)存在當(dāng)前應(yīng)用程序域中,所以他是最簡(jiǎn)單、快速、好用的。

InProc模式Session數(shù)據(jù)保存在應(yīng)用程序域內(nèi)的一個(gè)集合對(duì)象,他在一個(gè)應(yīng)用程序池中進(jìn)行工作,如果我們重啟服務(wù),我們將丟失Session數(shù)據(jù)。正常情況下客戶端發(fā)送請(qǐng)求,State Provider從內(nèi)存對(duì)象中讀取數(shù)據(jù)并返回給客戶端,在web.config中我們必須提供Session模式和設(shè)置過(guò)期時(shí)間:

上面的設(shè)置中,設(shè)置了Session的過(guò)期時(shí)間為30分鐘,這也可以從后臺(tái)代碼中進(jìn)行配置。

Session.TimeOut=30;
在ASP.NET中有兩個(gè)Session事件可以進(jìn)行使用:Session_Start()和Session_End()而這種模式(后端代碼控制)只支持Session_End()事件。這個(gè)事件在Session超時(shí)時(shí)被調(diào)用,一般情況下,InProc Session模式是這樣的:

當(dāng)Session過(guò)期時(shí)Session_End()事件被調(diào)用。InProc是一個(gè)非常快的處理機(jī)制,因?yàn)闆](méi)有序列化地讀/寫過(guò)程,并且數(shù)據(jù)保存在相同的域內(nèi)。

什么時(shí)候我們使用InProc模式呢?

InProc是默認(rèn)的Session模式,他對(duì)小型應(yīng)用程序和用戶量比較小的程序非常合適,我們應(yīng)盡量避免在Web園(Web Garden)和Web農(nóng)場(chǎng)(Web Farm)情境下使用他(以后我會(huì)講到這個(gè)情境)

優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

他把Session數(shù)據(jù)存儲(chǔ)在當(dāng)前應(yīng)用程序域內(nèi),所以訪問(wèn)數(shù)據(jù)會(huì)非常的快速、簡(jiǎn)單、高效。

在InProc模式中不需要對(duì)對(duì)象進(jìn)行序列化存儲(chǔ)。

使用起來(lái)非常簡(jiǎn)單,就像ViewState一樣。

缺點(diǎn):

雖然InProc是最快的,最通用的,也是默認(rèn)的機(jī)制,但是他有許多限制:

如果工作的應(yīng)用進(jìn)程被回收,Session數(shù)據(jù)將全部丟失。

雖然他是最快的,但是當(dāng)Session數(shù)據(jù)太大和用戶過(guò)多時(shí),他會(huì)由于內(nèi)存的大量使用而影響整個(gè)程序的性能。

我們不能在Web園環(huán)境中使用這種模式。

這種模式不適合用于Web農(nóng)場(chǎng)(Web Farm)環(huán)境中。

現(xiàn)在,我們來(lái)看看其他可用的方法來(lái)規(guī)避這些缺點(diǎn),首先是StateServer模式:

StateServer Session模式

StateServer模式概述

這也叫做Out-Proc Session模式。StateServer使用了一個(gè)獨(dú)立的Windows服務(wù)來(lái)提供Session服務(wù),他獨(dú)立于IIS,也能獨(dú)使用一臺(tái)服務(wù)器。StateServer的服務(wù)來(lái)自于aspnet_state.exe提供。這個(gè)服務(wù)也能和您的應(yīng)用服務(wù)共同運(yùn)行在同一臺(tái)服務(wù)器上,注意他是獨(dú)立于Web應(yīng)用程序域的一個(gè)服務(wù)。這意味著你重啟你的Web服務(wù)后Session數(shù)據(jù)依然存在。這個(gè)方案的缺點(diǎn)在于有一個(gè)性能瓶頸:數(shù)據(jù)讀寫需要進(jìn)行序列化和反序列化,因?yàn)椴皇峭粋€(gè)應(yīng)用程序域,所以他也增加了數(shù)據(jù)讀寫的性能消耗,因?yàn)樗麄兪莾蓚€(gè)不同的進(jìn)程。

配置StateServer Session模式

在StateServer模式里,Session數(shù)據(jù)存儲(chǔ)在獨(dú)立于IIS的一個(gè)服務(wù)里。這個(gè)進(jìn)程作為一個(gè)Windows服務(wù)運(yùn)行,你能在Windows服務(wù)管理器(MMC)或者命令行中進(jìn)行啟動(dòng)。

默認(rèn)情況下,ASP.NET StateServer(中文名:ASP.NET狀態(tài)服務(wù))默認(rèn)情況下啟動(dòng)方式是“手動(dòng)”我們必須將他設(shè)置為自動(dòng)。

如果從命令行啟動(dòng)的化只需要輸入:”net start aspnet_state”;默認(rèn)情況下,這個(gè)服務(wù)監(jiān)聽(tīng)TCP端口42424,但是我們可以在注冊(cè)表里改變這個(gè)設(shè)置,如圖:

現(xiàn)在,我們來(lái)看一看web.config對(duì)StateServer的設(shè)置,在StateServer的設(shè)置里我們需要指定StateServer連接字符串stateConnectionString:指向運(yùn)行StateServer的系統(tǒng)。默認(rèn)設(shè)置下,StateConnectionString使用IP127.0.0.1(localhost)端口使用42424。

當(dāng)我們使用StateServer,我們還能設(shè)置超時(shí)stateNetworkTimeOut特性指定等待服務(wù)響應(yīng)的秒數(shù),即發(fā)出請(qǐng)求到取消響應(yīng)的事件時(shí)間間隔。默認(rèn)情況下是10秒。

當(dāng)使用StateServer進(jìn)行存儲(chǔ)時(shí)對(duì)象將被序列化進(jìn)行儲(chǔ)存,而讀取對(duì)象時(shí),將對(duì)數(shù)據(jù)進(jìn)行反序列化,我們來(lái)看下面的例子:

StateServer是如何工作的

我們使用StateServer來(lái)避免當(dāng)重啟Web服務(wù)時(shí)無(wú)謂的Session數(shù)據(jù)丟失。StateServer是在aspnet_state.exe進(jìn)程作為一個(gè)服務(wù)來(lái)進(jìn)行維護(hù)的,這個(gè)進(jìn)程維護(hù)著所有的Session數(shù)據(jù),但是在存儲(chǔ)到StateServer之前我們需要對(duì)數(shù)據(jù)進(jìn)行序列化。

如上圖所示,客戶端發(fā)送請(qǐng)求到Web服務(wù)器,Web服務(wù)器將Session數(shù)據(jù)存儲(chǔ)在StateServer里,StateServer也許在當(dāng)前的系統(tǒng)里,也可能在另一個(gè)系統(tǒng)里,但他一定是獨(dú)立于IIS的,為了實(shí)現(xiàn)他,我們必須在web.config里進(jìn)行配置stateConnectionString。例如我們?cè)O(shè)置指向127.0.0.1:42424,這將把數(shù)據(jù)存儲(chǔ)在本地的系統(tǒng)內(nèi),為了實(shí)現(xiàn)改變StateServer指向的目的,我們改變了IP,并且確定aspnet_state.exe正常運(yùn)行于這個(gè)系統(tǒng)上,接下來(lái)當(dāng)你需要讀寫Session時(shí)(也就是通過(guò)修改IP來(lái)導(dǎo)致一個(gè)錯(cuò)誤的指向),你就會(huì)引發(fā)下圖這樣的異常:

當(dāng)我們存儲(chǔ)一個(gè)對(duì)象到Session,對(duì)象將被序列化。系統(tǒng)利用State Provider將數(shù)據(jù)存儲(chǔ)進(jìn)StateServer。當(dāng)讀取數(shù)據(jù)時(shí),State Provider將返回?cái)?shù)據(jù),完整的流程圖如下圖:

StateServer Session模式例子:

這是一個(gè)簡(jiǎn)單的使用StateServer Session模式的例子,我直接在IIS里創(chuàng)建這個(gè)例子,能輕松地明白他的用法:

步驟1:打開(kāi)Visual Studio>文件>新建>網(wǎng)站。選擇HTTP作為web應(yīng)用的位置。

現(xiàn)在你打開(kāi)IIS,你將會(huì)看到創(chuàng)建了一個(gè)虛擬目錄,名字是你的應(yīng)用名,在我的例子中是StateServer。

步驟2:創(chuàng)建一個(gè)簡(jiǎn)單的UI:他將獲取一個(gè)學(xué)生的角色編號(hào)和名字,我們將保存名字和編號(hào)到StateServer Session里。我也將創(chuàng)建一個(gè)類:StudentInfo,這個(gè)類的定義如下:

[Serializable]
public class StudentInfo
{
? ? //Default Constructor
? ? public StudentInfo(){}
? ? // Create object of student Class
? ? //Int RollNumber
? ? ///String Name
? ? public StudentInfo(int intRoll, string strName)
? ? {
? ? ? ? this.Roll = intRoll;
? ? ? ? this.Name = strName;
? ? }
? ? private int intRoll;
? ? private string strName;
? ? public int Roll{
? ? ? ? get{return intRoll;}
? ? ? ? set{intRoll = value;}
? ? }
? ? public string Name{
? ? ? ? get{return strName;}
? ? ? ? set{strName = value;}
? ? }
} ? ? ? ? ??
現(xiàn)在來(lái)看后端代碼,我增加了兩個(gè)Button:一個(gè)是保存Session,另一個(gè)是獲取Session:

protected void btnSubmit_Click(object sender, EventArgs e)
{
? ? StudentInfo _objStudentInfo =new StudentInfo(Int32.Parse( txtRoll.Text) ,txtUserName.Text);
? ? Session["objStudentInfo"] = _objStudentInfo;ResetField();
}
protected void btnRestore_Click(object sender, EventArgs e)
{
? ? StudentInfo _objStudentInfo = (StudentInfo) Session["objStudentInfo"];
? ? txtRoll.Text = _objStudentInfo.Roll.ToString();
? ? txtUserName.Text = _objStudentInfo.Name;
}
步驟3:配置你的web.config的StateServer,在之前介紹過(guò),請(qǐng)確保web.config在配置所指向的服務(wù)器上的State Server是處于開(kāi)啟并運(yùn)行的狀態(tài)。

步驟4:運(yùn)行應(yīng)用。

輸入數(shù)據(jù),點(diǎn)擊Submit。

接下來(lái)的測(cè)試,我將完整的解釋如何使用StateServer

首先:移除StudentInfo類[Serializable]特性,然后運(yùn)行應(yīng)用。當(dāng)你點(diǎn)解Submit按鈕,你將看到如下的錯(cuò)誤:

清晰地指出了在存儲(chǔ)之前你必須序列化你的對(duì)象。

第二:運(yùn)行程序,在點(diǎn)擊了Submit按鈕保存數(shù)據(jù)后,重啟IIS

如果在InProc中,我保證你的Session數(shù)據(jù)將會(huì)丟失,但是在StateServer中,點(diǎn)擊Restore Session按鈕,你將獲取你的原始數(shù)據(jù),因?yàn)镾tateServer數(shù)據(jù)不依賴于IIS,它獨(dú)立地保存數(shù)據(jù)。

第三:在Windows 服務(wù)管理程序(MMC)中停止StateServer服務(wù),你再點(diǎn)擊Submit按鈕,你將看到如下錯(cuò)誤:

因?yàn)槟愕腟tateServer進(jìn)程沒(méi)有運(yùn)行,所以當(dāng)你在使用StateServer的時(shí)候,請(qǐng)牢記這三點(diǎn)。

優(yōu)點(diǎn)和缺點(diǎn)

基于上述討論:

優(yōu)點(diǎn):

StateServer獨(dú)立于IIS運(yùn)行,所以無(wú)論IIS出什么問(wèn)題都影響不到StateServer的數(shù)據(jù)。

他能在Web Farm和Web Garden環(huán)境中使用。

缺點(diǎn):

要進(jìn)行序列化和反序列化,拖慢速度。

StateServer需要保證正常運(yùn)行。

我在這里停止StateServer的講述,你將在負(fù)載均衡中看到他更多更有趣的點(diǎn),Web Farm,Web Garden情境下。

參考文獻(xiàn):

State Server Session Mode

ASP.NET Session State

SQL Server Session模式

SQL Server模式簡(jiǎn)介

ASP.NET這個(gè)Session模式提供給我們了更強(qiáng)的安全性和可靠性,在這個(gè)模式下,Session數(shù)據(jù)被序列化并存儲(chǔ)到一個(gè)SQL Server的數(shù)據(jù)庫(kù)中,這個(gè)模式缺點(diǎn)在于Session需要序列化和反序列化的讀寫方式成為了主要的性能瓶頸,他是Web Farm的最佳選擇。

設(shè)置SQL Server,我們需要這些SQL腳本:

安裝:InstallSqlState.sql

卸載:UninstallSQLState.sql

最簡(jiǎn)單的配置方式是利用aspnet_regsql命令。

之前已經(jīng)解釋過(guò)了如何配置,這是最有用的狀態(tài)管理方法在web Farm模式里。

我們?yōu)楹问褂肧QL Server模式?

SQL Server Session模式提供了更安全、更可靠的Session管理。

他保證了數(shù)據(jù)在一個(gè)集中式的環(huán)境中(數(shù)據(jù)庫(kù))。

當(dāng)我們需要更安全地實(shí)現(xiàn)Session時(shí)就應(yīng)該使用SQL Server模式。

假如服務(wù)器經(jīng)常需要重啟,這是一個(gè)完美的解決方案。

這是一個(gè)完美解決web Farm和web園的方案(這個(gè)我將在后面詳細(xì)解釋)。

當(dāng)我們需要在兩個(gè)應(yīng)用間共享Session時(shí)我們需要使用SQL Server模式。

配置SQL Server Session模式

在SQL Server模式中,我們的數(shù)據(jù)保存在SQL Server中,所以我們首先要在web.config里提供數(shù)據(jù)庫(kù)連接字符串,sqlConnectionString是被用來(lái)做這事的。

在連接字符串配置完成后,我們將要配置SQL Server,我將在這里演示如何用aspnet_regsql命令進(jìn)行數(shù)據(jù)庫(kù)配置。

第一步:進(jìn)入命令行,進(jìn)入到Framework version目錄E.g. :c:\windows\microsoft.net\framework\。

第二步,帶參運(yùn)行aspnet_regsql命令。

下面是參數(shù)的使用:

Parameters?? ?Description
-ssadd?? ?增加 SQLServer 模式 session state.
-sstype p?? ?P 持久化.將這些數(shù)據(jù)持久化存儲(chǔ)于數(shù)據(jù)庫(kù)中
-S?? ?服務(wù)器名
-U?? ?用戶名
-P?? ?密碼.
?
運(yùn)行結(jié)束后,你見(jiàn)看到如下的信息:

配置結(jié)束。

第三步:

打開(kāi)SQL Server,查看數(shù)據(jù)庫(kù)ASPState庫(kù),將有兩張表:

ASPStateTempApplications

ASPStateTempSessions

更改設(shè)置中的連接字符串,建立一個(gè)像StateServer例子中那樣的應(yīng)用

點(diǎn)擊Submit時(shí)保存Roll Number和用戶名,打開(kāi)數(shù)據(jù)庫(kù),進(jìn)入ASPStateTempSessions表,這是你保存的Session數(shù)據(jù):

現(xiàn)在我們?cè)賮?lái)討論以下StateServer模式中所討論的幾個(gè)問(wèn)題:

1、從StydentInfo類中移除Serialize特性(keyword)

2、重啟IIS再讀取Session數(shù)據(jù)

3、停止SQL Server服務(wù)

我想這些問(wèn)題我已經(jīng)在StateServer解釋得很清楚了。

(注:第一種將導(dǎo)致無(wú)法序列化對(duì)象,會(huì)拋出異常,第二種無(wú)影響,第三種,在關(guān)閉數(shù)據(jù)庫(kù)服務(wù)時(shí)會(huì)有影響,而重啟數(shù)據(jù)庫(kù)服務(wù)將找回Session內(nèi)的數(shù)據(jù),因?yàn)樗浅志没瘍?chǔ)存的。)

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

Session數(shù)據(jù)不受IIS重啟的影響

最可靠和最安全的Session管理模式

他在本地中心化保存Session數(shù)據(jù),能使其他應(yīng)用方便地進(jìn)行訪問(wèn)

在Web Farm 和Web Garden情境下非常實(shí)用

缺點(diǎn):

和默認(rèn)模式比較起來(lái),會(huì)顯得很慢

對(duì)象的序列化和反序列化會(huì)成為性能瓶頸

因?yàn)樾枰诓煌姆?wù)器上訪問(wèn)SQL Server,我們必須保證SQL Server的穩(wěn)定運(yùn)行。

參考資料:

Read more about SQLServer mode

自定義Session模式

通常情況下,我們使用InProc模式、StateServer模式、SQL Server模式就夠了,可是我們還是需要了解一些用戶自定義Session模式的相關(guān)知識(shí)。這是一種相當(dāng)有趣的Session模式,因?yàn)橛脩舻腟ession全部交由了我們進(jìn)行控制,甚至Session ID,你都能通過(guò)自己寫算法來(lái)生成Session ID。

你能夠容易地從基類SessionStateStoreProviderBase開(kāi)發(fā)出自定義的Provider,你也能通過(guò)實(shí)現(xiàn)ISessionIDManager接口來(lái)產(chǎn)生SessionID。

下圖是自定義方法的處理過(guò)程:

在Initialize方法中,我們能設(shè)置一個(gè)自定義Provider。他將提供給Provider初始化連接。SetItemExpireCallback被用作提供SessionTimeOut(Session過(guò)期),當(dāng)Session過(guò)期時(shí)我們能注冊(cè)一個(gè)方法進(jìn)行調(diào)用。InitializeRequest在請(qǐng)求發(fā)起的時(shí)候被調(diào)用,CreateNewStoreData在創(chuàng)建一個(gè)SessionStateStoreData(Session數(shù)據(jù)存儲(chǔ)類)實(shí)例時(shí)候被調(diào)用。

我們何時(shí)使用自定義Session模式?

1、 當(dāng)我們想將Session數(shù)據(jù)存儲(chǔ)在SQL Server之外的數(shù)據(jù)庫(kù)內(nèi)時(shí)。

2、 當(dāng)我們必須使用一個(gè)已存在的(特定的)表來(lái)存儲(chǔ)Session數(shù)據(jù)的時(shí)候。

3、 當(dāng)我們需要使用自定義的SessionID的時(shí)候

如何配置自定義Session模式?

我們需要在web.config里進(jìn)行這樣的配置:

如果你想了解更多的關(guān)于自定義模式的信息,請(qǐng)查閱參考資料。

優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

1、 我們能使用一個(gè)已存在的表(指定的表)來(lái)存儲(chǔ)Session數(shù)據(jù)。當(dāng)我們使用一個(gè)之前使用的數(shù)據(jù)庫(kù)時(shí),這樣做是很有用的。

2、 他獨(dú)立于IIS運(yùn)行,所以重啟服務(wù)器對(duì)他也沒(méi)有影響。

3、 我們能建立自己的Session ID邏輯來(lái)分配Session ID。

缺點(diǎn):

1、 處理數(shù)據(jù)很慢。

2、 創(chuàng)建一個(gè)自定義的Session狀態(tài)Provider是一個(gè)基礎(chǔ)性(low-level)任務(wù),他需要小心處理各種情況以及保證數(shù)據(jù)安全。

我推薦您使用第三方提供的Provider而不是自己寫一套Provider。

參考資料:

Custom Mode

生產(chǎn)部署的概述:

在實(shí)際的生產(chǎn)工作環(huán)境中部署我們的應(yīng)用對(duì)于一個(gè)Web開(kāi)發(fā)者來(lái)說(shuō)是一個(gè)非常重大的挑戰(zhàn)。因?yàn)樵诖蟮纳a(chǎn)環(huán)境中,有大量的用戶數(shù)據(jù)需要處理,數(shù)據(jù)量大到一臺(tái)服務(wù)器難以負(fù)載這么巨大的數(shù)據(jù)處理量。這個(gè)概念來(lái)自于Web Farm,Web Garden,負(fù)載均衡的使用。

在幾個(gè)月前,我部署了一個(gè)實(shí)際環(huán)境:這個(gè)環(huán)境要處理百萬(wàn)級(jí)的用戶訪問(wèn)以及超過(guò)10個(gè)域控制器,通過(guò)負(fù)載均衡搭載了超過(guò)10臺(tái)服務(wù)器和服務(wù)數(shù)據(jù)庫(kù)。例如交易服務(wù)器、LCS服務(wù)器。最大的挑戰(zhàn)來(lái)自于跨多個(gè)服務(wù)器的Session管理。下圖對(duì)這個(gè)生產(chǎn)環(huán)境展示了一個(gè)簡(jiǎn)單的圖形:

我將試著解釋并讓您記住各個(gè)不同應(yīng)用場(chǎng)景。

應(yīng)用程序池

這是當(dāng)您在創(chuàng)建一個(gè)實(shí)際生產(chǎn)環(huán)境時(shí)最重要的一個(gè)東西。應(yīng)用程序池是用在IIS里用來(lái)分隔不同的工作進(jìn)程的應(yīng)用程序的,應(yīng)用程序池能分隔我們的應(yīng)用程序,使其獲得更好的安全性,可靠性和有效性。應(yīng)用程序池的應(yīng)用在服務(wù)器中當(dāng)一個(gè)進(jìn)程出現(xiàn)問(wèn)題,或者被回收時(shí)其他進(jìn)程不受影響。

應(yīng)用程序池的角色:

應(yīng)用程序池的配置角色是一個(gè)重要的安全措施,在IIS6和IIS7里。因?yàn)楫?dāng)應(yīng)用程序訪問(wèn)資源時(shí)他指定了應(yīng)用程序的身份。在IIS7里,有三種預(yù)定義的身份指定方式,這和IIS6是一樣的。

應(yīng)用程序池角色?? ?描述
LocalSystem?? ?內(nèi)建于服務(wù)器上管理權(quán)限的賬戶. 他能訪問(wèn)本地和遠(yuǎn)程資源. 任何服務(wù)器的文件或者資源, 我們必須把應(yīng)用程序的身份設(shè)置為L(zhǎng)ocalSystem.
LocalServices?? ?內(nèi)置的本地身份驗(yàn)證. 他不能進(jìn)行任何網(wǎng)絡(luò)訪問(wèn)。
NetworkServices?? ?這是應(yīng)用程序池的默認(rèn)身份,NetworkServices是一個(gè)經(jīng)過(guò)驗(yàn)證的本地用戶賬戶權(quán)限。
建立和指定應(yīng)用程序池

打開(kāi)IIS管理頁(yè)面,右鍵單擊應(yīng)用程序池目錄->新建

給應(yīng)用程序池一個(gè)ID,然后點(diǎn)擊OK。

現(xiàn)在,右鍵單擊一個(gè)虛擬目錄(我正在使用的StateServer站點(diǎn))分配StateServerAppPool給StateServer虛擬目錄。

現(xiàn)在這個(gè)StateServer站點(diǎn)運(yùn)行在了一個(gè)指定的獨(dú)立的應(yīng)用程序池StateServerAppPool里。其他任何應(yīng)用都不會(huì)影響到這個(gè)程序。這是獨(dú)立應(yīng)用程序池的主要優(yōu)點(diǎn)。

Web Garden

默認(rèn)情況下,每一個(gè)應(yīng)用程序池都運(yùn)行在一個(gè)獨(dú)立的工作進(jìn)程里(W3Wp.exe)。我們能分配多個(gè)進(jìn)程給單個(gè)應(yīng)用程序池,一個(gè)應(yīng)用程序池跑多個(gè)進(jìn)程,這樣的情況叫做Web Garden(Web園),多個(gè)工作進(jìn)程單個(gè)應(yīng)用程序在很多情況下都能夠有更優(yōu)秀的輸出性能和更少的相應(yīng)時(shí)間,每一個(gè)工作進(jìn)程都會(huì)有他們自己的線程和內(nèi)存空間。

如上圖所示,在IIS里,將會(huì)有多個(gè)應(yīng)用程序池,并且每個(gè)應(yīng)用程序池至少有一個(gè)工作進(jìn)程,而一個(gè)Web Garden將有多個(gè)工作進(jìn)程。

在你的應(yīng)用程序里,使用Web園將必然出現(xiàn)一個(gè)限制條件:如果我們使用InProc模式,我們的應(yīng)用程序?qū)o(wú)法正確的工作,因?yàn)镾ession將工作在不同的進(jìn)程里。為了避免這樣的問(wèn)題,我們將使用進(jìn)程外(OurProc)的Session模式,我們可以使用State Server或者SQL Server Session模式。

主要優(yōu)點(diǎn):

在Web園內(nèi)的工作進(jìn)程對(duì)每個(gè)進(jìn)程都共享請(qǐng)求,如果一個(gè)進(jìn)程掛了,其他的進(jìn)程還能正常工作,繼續(xù)處理請(qǐng)求。

如何建立一個(gè)Web Garden?

右鍵單擊程序池->Performance(性能?)選項(xiàng)卡->選擇Web Garden(Web園)部分

默認(rèn)情況下他的值為1,現(xiàn)在把他改為一個(gè)比1大的數(shù)字。

如何在Web園內(nèi)指定Session?

我已經(jīng)解釋過(guò)InProc模式是在單個(gè)工作進(jìn)程中進(jìn)行處理,在進(jìn)程內(nèi)存儲(chǔ)對(duì)象,現(xiàn)在,如果我們要處理多個(gè)進(jìn)程,Session處理將會(huì)變得很困難,因?yàn)槊總€(gè)工作進(jìn)程獨(dú)享自己的內(nèi)存。那么假如第一個(gè)請(qǐng)求數(shù)據(jù)到了WP1并且保存了Session數(shù)據(jù),第二個(gè)請(qǐng)求到了WP2我將無(wú)法正確獲得Session的數(shù)據(jù),取值的話將會(huì)拋出異常。所以,請(qǐng)避免在Web Garden模式下使用InProc模式。

我們使用StateServer或者SQLServer模式對(duì)這種情況進(jìn)行處理,之前解釋過(guò),這兩種模式不依賴于工作進(jìn)程,在之前的例子里也說(shuō)過(guò)當(dāng)IIS重啟你依然能訪問(wèn)到Session數(shù)據(jù)。

Session模式?? ?是否推薦
InProc?? ?No
StateServer?? ?Yes
SQLServer?? ?Yes?

Web Farm和負(fù)載均衡

這是在生產(chǎn)環(huán)境中最常見(jiàn)的情形,當(dāng)你需要在多臺(tái)服務(wù)器上部署你的應(yīng)用時(shí),使用這種模式的主要原因是我們要將負(fù)載均衡到多臺(tái)服務(wù)器上,一個(gè)負(fù)載均衡器被用于分發(fā)負(fù)載到多臺(tái)服務(wù)器上。

我們來(lái)看上圖,客戶端通過(guò)URL發(fā)送請(qǐng)求時(shí)先到負(fù)載均衡器,然后通過(guò)負(fù)載均衡器將請(qǐng)求分發(fā)給服務(wù)器,負(fù)載均衡器將在不同的服務(wù)器之間進(jìn)行請(qǐng)求的分發(fā)。

現(xiàn)在我們?nèi)绾翁幚砦覀兊腟ession呢?

在WEB Farm和負(fù)載均衡情況下處理Session

在Web Farm中處理Session是一個(gè)有挑戰(zhàn)性的工作。

InProc:InProc Session模式,Session數(shù)據(jù)以對(duì)象形式被存儲(chǔ)在工作進(jìn)程中,每個(gè)服務(wù)器將有他自己的工作進(jìn)程,并將保持Session數(shù)據(jù)在內(nèi)存中。

假如一臺(tái)服務(wù)器down了,那么請(qǐng)求將會(huì)訪問(wèn)其他服務(wù)器,而其他服務(wù)器里是不存在相應(yīng)Session數(shù)據(jù)的。所以在Web Farm情形下不推薦使用InProc模式。

State Server:之前已經(jīng)解釋過(guò)如何使用和配置StateServer模式了,在WebFarm的環(huán)境下你將了解他是多么的重要,因?yàn)樗蠸ession數(shù)據(jù)將在一個(gè)位置進(jìn)行存儲(chǔ)。

記住,在web Farm環(huán)境里,你必須保證你有相同的節(jié)在你所有的web服務(wù)器上,其他配置和之前描述的一致,所有的web.config文件都要有相同的配置屬性(stateConnectionString)在Session State里。

SQL Server:這是另一個(gè)選擇,這也是在Web Farm環(huán)境里的最佳選擇,我們首先需要配置數(shù)據(jù)庫(kù),接下來(lái)的步驟之前已經(jīng)說(shuō)過(guò)了。

如上圖所示,所有的web服務(wù)器Session數(shù)據(jù)都將被存儲(chǔ)于一個(gè)SQL Server數(shù)據(jù)庫(kù)。請(qǐng)記住一點(diǎn),在StateServer模式和SQL Server模式下你都將把對(duì)象進(jìn)行序列化存儲(chǔ)。當(dāng)一臺(tái)Web服務(wù)器掛掉的時(shí)候,負(fù)載均衡器將把請(qǐng)求分發(fā)到其他服務(wù)器他將能從數(shù)據(jù)庫(kù)里取出Session數(shù)據(jù),因?yàn)樗蠸ession數(shù)據(jù)都是存放于數(shù)據(jù)庫(kù)里的。

總之,我們能用StateServer和SQL Server模式來(lái)進(jìn)行Web Farm的部署,我們需要盡量避免使用InProc模式。

Session和Cookie

客戶端使用Cookie來(lái)配合使用Session,因?yàn)榭蛻舳诵枰o每個(gè)請(qǐng)求提供合適的Session ID,我們可以使用下列的方法:

使用Cookie

ASP.NET使用了一個(gè)特定的Cookie名叫作:ASP.NET_SessionId這是當(dāng)Session集合被創(chuàng)建的時(shí)候自動(dòng)提供的,這是默認(rèn)設(shè)置,Session ID通過(guò)Cookie進(jìn)行傳送。

Cookie Munging

當(dāng)用戶向服務(wù)器發(fā)送一個(gè)請(qǐng)求時(shí),服務(wù)器解碼Session ID并將他加入到每個(gè)頁(yè)面的鏈接里,當(dāng)用戶點(diǎn)擊鏈接,ASP.NET編碼Session ID并傳送到用戶所請(qǐng)求的頁(yè)面,現(xiàn)在,請(qǐng)求的頁(yè)面可以獲取Session變量了。這一切都是自動(dòng)完成的,當(dāng)ASP.NET發(fā)現(xiàn)用戶瀏覽器不支持Cookie時(shí)。

如何實(shí)現(xiàn)Cookie Munging

為了這個(gè),我們必須保證我們的Session State為Cookie-less。

移除Session

下面的方法被用來(lái)移除Session

方法?? ?描述
Session.Remove(strSessionName)?? ?從Session State中移除一個(gè)項(xiàng)目
Session.RemoveAll()?? ?從Session集合中移除所有項(xiàng)目
Session.Clear()?? ?從Session集合中移除所有項(xiàng)目. Note: Clear和RemoveAll.RemoveAll()沒(méi)有區(qū)別Clear()是內(nèi)部的.
Session.Abandon()?? ?取消當(dāng)前的Session。
啟用和禁用Session

從性能優(yōu)化來(lái)說(shuō),我們可以啟用或禁用Session,因?yàn)槊總€(gè)頁(yè)面都進(jìn)行讀寫Session會(huì)出現(xiàn)一些性能開(kāi)銷,所以,更合適地啟用或者禁用Session,而不是使用他的默認(rèn)配置:always。我們啟用和禁用Session可以采取兩種方式:

頁(yè)面級(jí)

應(yīng)用級(jí)

頁(yè)面級(jí)

我們能禁用Session在頁(yè)面指令的EnableSessionState屬性中

同樣的,我們可以讓他成為只讀的,這將只允許訪問(wèn)Session而禁止寫入信息到Session

應(yīng)用級(jí)

通過(guò)設(shè)置web.config的屬性EnableSessionState可以讓Session在整個(gè)應(yīng)用程序內(nèi)被禁用,

一般我們都是采用頁(yè)面級(jí)的限制,這樣能靈活控制Session的使用。

參考文獻(xiàn):

How to Disable ASP.NET Session State

總結(jié)

希望你現(xiàn)在能更熟悉Session了,如何使用Session,以及如何在Web Farm中使用,總結(jié)如下:

1、 InProc Session Provider是最快的,因?yàn)樗袛?shù)據(jù)都存在應(yīng)用程序的內(nèi)存里,Session數(shù)據(jù)在IIS重啟,或者站點(diǎn)被回收的情況下丟失,你可以在用戶量較小的網(wǎng)站上使用這種模式,但別在Web Farm下使用。

2、 State Server模式:Session數(shù)據(jù)被存儲(chǔ)于aspnet_state.exe應(yīng)用中,他在Web服務(wù)之外保存Session數(shù)據(jù),所以Web服務(wù)出現(xiàn)問(wèn)題不會(huì)對(duì)他的Session數(shù)據(jù)造成影響,在將Session數(shù)據(jù)存儲(chǔ)到StateServer之前需要序列化對(duì)象,在Web Farm中我們能安全地使用這個(gè)模式。

3、 SQL Server模式:他將Session數(shù)據(jù)保存到SQL Server中,我們需要提供連接串,我們存儲(chǔ)時(shí)也需要對(duì)對(duì)象進(jìn)行序列化,這種模式在實(shí)際Web Farm的生產(chǎn)環(huán)境中是非常有用的。

4、 我們也能使用自定義模式,當(dāng)我們需要使用一個(gè)已經(jīng)存在的表來(lái)存儲(chǔ)Session數(shù)據(jù)時(shí),在自定義模式中,我們也能創(chuàng)建自定義的Session ID,但是不推薦你自己來(lái)實(shí)現(xiàn)Provider,推薦使用第三方的Provider。
========


ASP.NET Session 簡(jiǎn)單超實(shí)用使用總結(jié)

https://www.cnblogs.com/yinrq/p/5032493.html

一、概述
Session用于存儲(chǔ)特定的用戶會(huì)話所需的信息 。 Session對(duì)象的引入是為了彌補(bǔ)HTTP協(xié)議的不足,HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議。

Session中文是“會(huì)話”的意思,在ASP.NET中代表了服務(wù)器與客戶端之間的“會(huì)話”。Session的作用時(shí)間從用戶到達(dá)某個(gè)特定的Web頁(yè)開(kāi)始,到該用戶離開(kāi)Web站點(diǎn),或在程序中利用代碼終止某個(gè)Session結(jié)束。引用Session 則可以讓一個(gè)用戶訪問(wèn)多個(gè)頁(yè)面之間的切換也會(huì)保留該用戶的信息。

系統(tǒng)為每個(gè)訪問(wèn)者都設(shè)立一個(gè)獨(dú)立的Session對(duì)象,用以存儲(chǔ)Session變量,并且各個(gè)訪問(wèn)者的Session對(duì)象互不干擾。

Session與Cookie是緊密相關(guān)的。 Session的使用要求用戶瀏覽器必須支持Cookie,如果瀏覽器不支持使用Cookie,或者設(shè)置為禁用Cookie,那么將不能使用Session。
Session信息對(duì)客戶來(lái)說(shuō),不同的用戶用不同的Session信息來(lái)記錄。當(dāng)用戶啟用Session時(shí),ASP自動(dòng)產(chǎn)生一個(gè)SessionID.在新會(huì)話開(kāi)始時(shí),服務(wù)器將SessionID當(dāng)做cookie存儲(chǔ)在用戶的瀏覽器中。

二、Session數(shù)據(jù)存放的位置和形式
web.config 配置節(jié)點(diǎn)語(yǔ)法:

<system.web>
<sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"
/>
</system.web>

mode:設(shè)置將Session信息存儲(chǔ)到哪里

? ? ? ? Off:不使用Session功能;?

? ? ? ? InProc :將Session存儲(chǔ)在IIS進(jìn)程內(nèi),這是默認(rèn)值,也最常用(優(yōu)點(diǎn)是簡(jiǎn)單,性能最高。但是當(dāng)重啟IIS服務(wù)器時(shí)Session丟失。);?

? ? ? ? StateServer :將Session存儲(chǔ)在ASP.NET狀態(tài)服務(wù)進(jìn)程中(重新啟動(dòng)Web應(yīng)用程序時(shí)保留會(huì)話狀態(tài),并使會(huì)話狀態(tài)可以用于網(wǎng)絡(luò)中的多個(gè)Web服務(wù)器。);?

? ? ? ? SQLServer :將Session存儲(chǔ)在SQL Server中(存儲(chǔ)在內(nèi)存和磁盤中,服務(wù)器掛掉重啟后都還在)。?

cookieless:設(shè)置客戶端的Session信息存儲(chǔ)到哪里

? ? ? ? ture 使用Cookieless模式;這時(shí)客戶端的Session信息就不再使用Cookie存儲(chǔ)了,而是將其通過(guò)URL存儲(chǔ)。

? ? ? ? false 使用Cookie模式,這是默認(rèn)值。

timeout 設(shè)置經(jīng)過(guò)多少分鐘后服務(wù)器自動(dòng)放棄Session信息。默認(rèn)為20分鐘。?

stateConnectionString 設(shè)置將Session信息存儲(chǔ)在狀態(tài)服務(wù)中時(shí)使用的服務(wù)器名稱和端口號(hào),例如:"tcpip=127.0.0.1:42424”。當(dāng)mode的值是StateServer是,這個(gè)屬性是必需的。(默認(rèn)端口42424)。?

sqlConnectionString 設(shè)置與SQL Server連接時(shí)的連接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=joye"。當(dāng)mode的值是SQLServer時(shí),這個(gè)屬性是必需的。

stateNetworkTimeout 設(shè)置當(dāng)使用StateServer模式存儲(chǔ)Session狀態(tài)時(shí),經(jīng)過(guò)多少秒空閑后,斷開(kāi)Web服務(wù)器與存儲(chǔ)狀態(tài)信息的服務(wù)器的TCP/IP連接的。默認(rèn)值是10秒鐘。

三、Session的curd操作
代碼:

? ? ? ? ? ? ?//寫入
? ? ? ? ? ? Session["UserName"] = "joye888";

? ? ? ? ? ? //讀取
? ? ? ? ? ? var userName = Session["UserName"].ToString();
? ? ? ? ? ? Response.Write(userName);

? ? ? ? ? ? //遍歷
? ? ? ? ? ? IEnumerator sessionEnum = Session.Keys.GetEnumerator();
? ? ? ? ? ? while (sessionEnum.MoveNext())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Response.Write(Session[sessionEnum.Current.ToString()].ToString() + " ");
? ? ? ? ? ? }?

? ? ? ? ? ? //銷毀
? ? ? ? ? ? Session.Abandon(); //結(jié)束會(huì)話
? ? ? ? ? ? Session.Clear();//不結(jié)束會(huì)話

四、Session運(yùn)行原理圖解

五、Session實(shí)際案例-在線購(gòu)物車和Session配合驗(yàn)證碼使用
代碼省略。

六、Session和Cookie的區(qū)別
1、cookie存客戶端,session存服務(wù)端。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙。

3、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。

4、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。
========

ASP.NET 狀態(tài)服務(wù) 及 session丟失問(wèn)題解決方案總結(jié)

https://blog.csdn.net/qq_28960147/article/details/80964532

ASP.NET 狀態(tài)服務(wù) 及 session丟失問(wèn)題解決方案總結(jié)
最近在開(kāi)發(fā)一ASP.NET2.0系統(tǒng)時(shí),在程序中做刪除或創(chuàng)建文件操作時(shí),出現(xiàn)session丟失問(wèn)題。在網(wǎng)上搜了不少資料,最后終于解決了,采用了如下方法:
1、asp.net Session的實(shí)現(xiàn):
asp.net的Session是基于HttpModule技術(shù)做的,HttpModule可以在請(qǐng)求被處理之前,對(duì)請(qǐng)求進(jìn)行狀態(tài)控制,由于Session本身就是用來(lái)做狀態(tài)維護(hù)的,因此用HttpModule做Session是再合適不過(guò)了。
ASP.NET中Session的狀態(tài)保持方式
ASP.NET提供了Session對(duì)象,從而允許程序員識(shí)別、存儲(chǔ)和處理同一個(gè)瀏覽器對(duì)象對(duì)服務(wù)器上某個(gè)特定網(wǎng)絡(luò)應(yīng)用程序的若干次請(qǐng)求的上下文信息。Session對(duì)應(yīng)瀏覽器與服務(wù)器的同一次對(duì)話,在瀏覽器第一請(qǐng)求網(wǎng)絡(luò)應(yīng)用程序的某個(gè)頁(yè)面時(shí),服務(wù)器會(huì)觸發(fā)Session_onStart事件;在對(duì)話超時(shí)或者被關(guān)閉的時(shí)候會(huì)觸發(fā)Session_onEnd 事件。程序員可以在代碼中響應(yīng)這兩個(gè)事件來(lái)處理與同一次對(duì)話相關(guān)的任務(wù),如開(kāi)辟和釋放該次對(duì)話要使用的資源等。
? ?在ASP.NET的程序中要使用Session對(duì)象時(shí),必須確保頁(yè)面的@page指令中EnableSessionState屬性是True或者Readonly,并且在web.config文件中正確的設(shè)置了SessionState屬性。
? ASP.NET中Session的狀態(tài)保持是由web.config文件中的<system.web>標(biāo)記下的<sessionstate>標(biāo)記的mode屬性來(lái)決定的。該屬性有四種可能的值:Off、Inproc、StateServer和SQlServer.
?設(shè)為Off會(huì)禁用Session.
? Inproc是缺省的設(shè)置,這種模式和以前的ASP的會(huì)話狀態(tài)的方法是類似的,會(huì)話的狀態(tài)會(huì)被保存在ASP.NET進(jìn)程中,它的優(yōu)點(diǎn)是顯而易見(jiàn)的:性能。進(jìn)程內(nèi)的數(shù)據(jù)訪問(wèn)自然會(huì)比夸進(jìn)程的訪問(wèn)快。然而,這種方法Session的狀態(tài)依賴于ASP.NET進(jìn)程,當(dāng)IIS進(jìn)程崩潰或者正常重起啟時(shí),保存在進(jìn)程中的狀態(tài)將丟失。
?為了克服Inproc模式的缺點(diǎn),ASP.NET提供了兩種進(jìn)程外保持會(huì)話狀態(tài)的方法。
? ASP.NET首先提供了提供了一個(gè)Windows服務(wù):ASPState,這個(gè)服務(wù)啟動(dòng)后,ASP.NET應(yīng)用程序可以將mode屬性設(shè)置為“SateServer”,來(lái)使用這個(gè)Windows服務(wù)提供的狀態(tài)管理方法。
?除了在web.config文件中設(shè)置mode屬性為StateServer外,還必須設(shè)置運(yùn)行StateServer服務(wù)器的IP地址和端口號(hào).如果在IIS所在的機(jī)器運(yùn)行StateServer則IP地址就是127.0.0.1,端口號(hào)通常是42424.配置如下:
?mode=”StateServer”
?stateConnectionString="tcpip=127.0.0.1:42424"
? ? 使用這種模式,會(huì)話狀態(tài)的存儲(chǔ)將不依賴IIS進(jìn)程的失敗或者重啟,會(huì)話的狀態(tài)將存儲(chǔ)在StateServer進(jìn)程的內(nèi)存空間中。
? ?另一種會(huì)話狀態(tài)模式是SQLServer模式。這種模式是將會(huì)話的狀態(tài)保存在SQL Server數(shù)據(jù)庫(kù)中的。使用這種模式前,必須至少有一臺(tái)SQL Server服務(wù)器,并在服務(wù)器中建立需要的表和存儲(chǔ)過(guò)程。.NET SDK提供了兩個(gè)腳本來(lái)簡(jiǎn)化這個(gè)工作:InstallSqlState.sql和UnInstallSqlState.sql。這兩國(guó)文件存放在下面路徑中:
? <%SYSTEMDRIVER%>/Winnt/Microsoft.NET/Framework/<%version%>/
要配置SQL Server 服務(wù)器,可以在命令行中運(yùn)行SQL Server提供的命令行工具osql.exe
? osql -s [server name] -u [user] -p [password] <InstallSqlState.sql
例如:
? osql -s (local) -u as -p “”-i ?InstallSqlState.sql
做好必要的數(shù)據(jù)庫(kù)準(zhǔn)備工作后,將web.config文件中的sessionstate元素的mode屬性改為”sqlserver”,并指定SQL連接字符串。具體如下:
? mode="SQLServer"
? ? sqlConnectionString="data source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes"
使用SQLServer模式處了可以使Session的狀態(tài)不依賴于IIS服務(wù)器之外,還可以利用SQL Server的集群,使?fàn)顟B(tài)存儲(chǔ)不依賴于單個(gè)的SQL Server,這樣就可以為應(yīng)用程序提供極大的可靠性。
?
2、丟失原因:
轉(zhuǎn)(1):Asp.net 默認(rèn)配置下,Session莫名丟失的原因及解決辦法
? ? ? 正常操作情況下Session會(huì)無(wú)故丟失。因?yàn)槌绦蚴窃诓煌5谋徊僮?#xff0c;排除Session超時(shí)的可能。另外,Session超時(shí)時(shí)間被設(shè)定成60分鐘,不會(huì)這么快就超時(shí)的。
? ? ? 這次到CSDN上搜了一下帖子,發(fā)現(xiàn)好多人在討論這個(gè)問(wèn)題,然后我又google了一下,發(fā)現(xiàn)微軟網(wǎng)站上也有類似的內(nèi)容。
現(xiàn)在我就把原因和解決辦法寫出來(lái)。
原因:
由于Asp.net程序是默認(rèn)配置,所以Web.Config文件中關(guān)于Session的設(shè)定如下:
<sessionState
mode='InProc'
stateConnectionString='tcpip=127.0.0.1:42424'
sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes'
cookieless='true'
timeout='60'/>

我們會(huì)發(fā)現(xiàn)sessionState標(biāo)簽中有個(gè)屬性mode,它可以有3種取值:InProc、StateServer?SQLServer(大小寫敏感)。默認(rèn)情況下是InProc,也就是將Session保存在進(jìn)程內(nèi)(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),這個(gè)進(jìn)程不穩(wěn)定,在某些事件發(fā)生時(shí),進(jìn)程會(huì)重起,所以造成了存儲(chǔ)在該進(jìn)程內(nèi)的Session丟失。
[asp的Session是具有進(jìn)程依賴性的。ASP Session狀態(tài)存于IIS的進(jìn)程中,也就是inetinfo.exe這個(gè)程序。所以當(dāng)inetinfo.exe進(jìn)程崩潰時(shí),這些信息也就丟失。]

哪些情況下該進(jìn)程會(huì)重起呢?微軟的一篇文章告訴了我們:
1、配置文件中processModel標(biāo)簽的memoryLimit屬性
2、Global.asax或者Web.config文件被更改
3、Bin文件夾中的Web程序(DLL)被修改
4、殺毒軟件掃描了一些.config文件。
更多的信息請(qǐng)參考PRB: Session variables are lost intermittently in ASP.NET applications
解決辦法:
? ? ? 前面說(shuō)到的sessionState標(biāo)簽中mode屬性可以有三個(gè)取值,除了InProc之外,還可以為StateServer、SQLServer。這兩種存Session的方法都是進(jìn)程外的,所以當(dāng)aspnet_wp.exe重起的時(shí)候,不會(huì)影響到Session。

? ? ? 現(xiàn)在請(qǐng)將mode設(shè)定為StateServer。StateServer是本機(jī)的一個(gè)服務(wù),可以在系統(tǒng)服務(wù)里看到服務(wù)名為ASP.NET State Service的服務(wù),默認(rèn)情況是不啟動(dòng)的。當(dāng)我們?cè)O(shè)定mode為StateServer之后,請(qǐng)手工將該服務(wù)啟動(dòng)。這樣,我們就能利用本機(jī)的StateService來(lái)存儲(chǔ)Session了,除非電腦重啟或者StateService崩掉,否則Session是不會(huì)丟的(因Session超時(shí)被丟棄是正常的)。
? ? ? 除此之外,我們還可以將Session通過(guò)其他電腦的StateService來(lái)保存[如使用狀態(tài)服務(wù)器]。具體的修改是這樣的。同樣還在sessionState標(biāo)簽中,有個(gè)stateConnectionString='tcpip=127.0.0.1:42424'屬性,其中有個(gè)ip地址,默認(rèn)為本機(jī)(127.0.0.1),你可以將其改成你所知的運(yùn)行了StateService服務(wù)的電腦IP,這樣就可以實(shí)現(xiàn)位于不同電腦上的Asp.net程序互通Session了。

? ? ? 如果你有更高的要求,需要在服務(wù)期重啟時(shí)Session也不丟失,可以考慮將mode設(shè)定成SQLServer,同樣需要修改sqlConnectionString屬性。關(guān)于使用SQLServer保存Session的操作,請(qǐng)?jiān)L問(wèn)這里。
? ? ? 在使用StateServer或者SQLServer存儲(chǔ)Session時(shí),所有需要保存到Session的對(duì)象除了基本數(shù)據(jù)類型(默認(rèn)的數(shù)據(jù)類型,如int、string等)外,都必須序列化。只需將[Serializable]標(biāo)簽放到要序列化的類前就可以了。
如:
[Serializable]
public class MyClass
{
? ? ......
}
具體的序列化相關(guān)的知識(shí)請(qǐng)參這里。
至此,問(wèn)題解決。

參考文章:
ASP.NET Session State FAQ
ASP.NET Session State
[ASP.NET] Session 詳解
PRB: Session Data Is Lost When You Use ASP.NET InProc Session State Mode
PRB: Session Data Is Lost When You Use ASP.NET InProc Session State Mode
ASP.NET HTTP 運(yùn)行時(shí)
.NET 中的對(duì)象序列化
備注
(1)使用 StateServer 模式
確保運(yùn)行 ASP.NET 狀態(tài)服務(wù)的服務(wù)器是要存儲(chǔ)會(huì)話狀態(tài)信息的遠(yuǎn)程服務(wù)器。該服務(wù)與 ASP.NET 一起安裝,其默認(rèn)位置為
<驅(qū)動(dòng)器>:/systemroot/Microsoft.NET/Framework/version/aspnet_state.exe。?
在應(yīng)用程序的 Web.config 文件中,
設(shè)置 mode=StateServer 并設(shè)置 stateConnectionString 屬性。
例如,stateConnectionString="tcpip=sarath:42424"。?
(2)使用 SQLServer 模式
在運(yùn)行 SQL Server 的計(jì)算機(jī)(它將存儲(chǔ)會(huì)話狀態(tài))上運(yùn)行 InstallSqlState.sql
(默認(rèn)的安裝位置為 <驅(qū)動(dòng)器>:/systemroot/Microsoft.NET/Framework/version)。
這將創(chuàng)建一個(gè)名為 ASPState 的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)具有新的存儲(chǔ)過(guò)程并且在 TempDB 數(shù)據(jù)庫(kù)中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
在應(yīng)用程序的 Web.config 文件中,設(shè)置 mode=SQLServer 并設(shè)置 sqlConnectionString 屬性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。?
(3)示例?
以下示例指定若干會(huì)話狀態(tài)配置設(shè)置。?

<configuration>?
<system.web>?
<sessionState mode="InProc"?
cookieless="true"?
timeout="20"/>?
</sessionState>?
</system.web>?
</configuration>?
要求?
包含于:<system.web>?
Web 平臺(tái):IIS 5.0、IIS 5.1、IIS 6.0?
配置文件:Machine.config、Web.config?
配置節(jié)處理程序:System.Web.SessionState.SessionStateSectionHandler?
請(qǐng)參見(jiàn)

ASP.NET 配置 | ASP.NET 設(shè)置架構(gòu) | SessionStateModule
作者: ?來(lái)源: ?(責(zé)任編輯:webjx)--- -------------收集之二---------------------------------
[出現(xiàn)原因:]在Windows2003的服務(wù)器中的IIS6加入了應(yīng)用程序池來(lái)回收一些無(wú)用的進(jìn)程的功能,當(dāng)由于網(wǎng)站程序的錯(cuò)誤或訪問(wèn)量太多的導(dǎo)致的應(yīng)用程序池會(huì)自動(dòng)回收該進(jìn)程,防止網(wǎng)站進(jìn)入“死機(jī)”狀態(tài),而這時(shí)候的應(yīng)用程序池的回收就會(huì)導(dǎo)致session變量被清除,就出現(xiàn)了session變量不見(jiàn)的現(xiàn)象。
為了解決這種在Windows2003下才出現(xiàn)的問(wèn)題,我們?cè)诜?wù)端起動(dòng)ASP.NET State Service服務(wù),并且在系統(tǒng)的machine.config做了一些改動(dòng)。現(xiàn)在默認(rèn)的情況下會(huì)話狀態(tài)mode是StateServer。如果您的網(wǎng)站根目錄下也配有一個(gè)web.config配置文件,請(qǐng)把mode="InProc"改成mode="StateServer",如下代碼,就可以防止session變量的丟失:
<sessionState?
mode="StateServer"?
stateConnectionString="tcpip=127.0.0.1:42424"?
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"?
cookieless="false"?
timeout="30"?
/>?
+ 注:只適用于支持asp.net的用戶。
?
轉(zhuǎn)(2):原因及一些解決之道
將Session保存在State Server里:
1.啟動(dòng)服務(wù)“ASP.NET State Service”,
2.然后,修改web.config:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="140000"
/>
注意://mode="StateServer"這種模式下即使修改頁(yè)面也不會(huì)丟失session!
當(dāng)然:mode="InProc"如果你的模式為這種,修改頁(yè)面的時(shí)候會(huì)丟失session!!!!!!

在WebConfig里將Session的Mode設(shè)成SQLServer或者StateServer都不會(huì)丟Session的,
前者需要寫入數(shù)據(jù)庫(kù),后者需要系統(tǒng)開(kāi)StateServer服務(wù)。
?
原因1:
bin目錄中的文件被改寫,asp.net有一種機(jī)制,為了保證dll重新編譯之后,系統(tǒng)正常運(yùn)行,它會(huì)重新啟動(dòng)一次網(wǎng)站進(jìn)程,這時(shí)就會(huì)導(dǎo)致Session丟失,所以如果有access數(shù)據(jù)庫(kù)位于bin目錄,或者有其他文件被系統(tǒng)改寫,就會(huì)導(dǎo)致Session丟失。[目錄的刪除操作一定丟失session。asp.net的內(nèi)部機(jī)制對(duì)待目錄有點(diǎn)像個(gè)守財(cái)奴,它死守著目錄,你創(chuàng)建它不會(huì)管(往里加),一但創(chuàng)建他就會(huì)監(jiān)視該目錄,若你要?jiǎng)h除或重命名它的(動(dòng)它的目錄),它就發(fā)生重起了。。]
原因2:
文件夾選項(xiàng)中,如果沒(méi)有打開(kāi)“在單獨(dú)的進(jìn)程中打開(kāi)文件夾窗口”,一旦新建一個(gè)窗口,系統(tǒng)可能認(rèn)為是新的Session會(huì)話,而無(wú)法訪問(wèn)原來(lái)的Session,所以需要打開(kāi)該選項(xiàng),否則會(huì)導(dǎo)致Session丟失
原因3:
似乎大部分的Session丟失是客戶端引起的,所以要從客戶端下手,看看cookie有沒(méi)有打開(kāi)
原因4:
Session的時(shí)間設(shè)置是不是有問(wèn)題,會(huì)不會(huì)因?yàn)槌瑫r(shí)造成丟失。
[默認(rèn)時(shí)間是20分鐘,可以在Web.Config中設(shè)置Session的timeOut,如改為60分鐘等]
原因5:
IE中的cookie數(shù)量限制(每個(gè)域20個(gè)cookie)可能導(dǎo)致session丟失
原因6:
使用web garden模式,且使用了InProc mode作為保存session的方式
解決丟失的經(jīng)驗(yàn)
1. 判斷是不是原因1造成的,可以在每次刷新頁(yè)面的時(shí)候,跟蹤bin中某個(gè)文件的修改時(shí)間。
2. 做Session讀寫日志,每次讀寫Session都要記錄下來(lái),并且要記錄SessionID、Session值、所在頁(yè)面、當(dāng)前函數(shù)、函數(shù)中的第幾次Session操作,這樣找丟失的原因會(huì)方便很多
3. 如果允許的話,建議使用state server或sql server保存session,這樣不容易丟失
4. 在global.asa中加入代碼記錄Session的創(chuàng)建時(shí)間和結(jié)束時(shí)間,超時(shí)造成的Session丟失是可以在SessionEnd中記錄下來(lái)的。
5. 如果有些代碼中使用客戶端腳本,如javascript維護(hù)Session狀態(tài),就要嘗試調(diào)試腳本,是不是因?yàn)槟_本錯(cuò)誤引起Session丟失。
?
轉(zhuǎn)(3):Session丟失原因與解決方案小結(jié)
可能的原因1:
win2003 server下的IIS6默認(rèn)設(shè)置下對(duì)每個(gè)運(yùn)行在默認(rèn)應(yīng)用池中的工作者進(jìn)程都會(huì)經(jīng)過(guò)20多個(gè)小時(shí)后自動(dòng)回收該進(jìn)程,造成保存在該進(jìn)程中的session丟失。

因?yàn)镾ession,Application等數(shù)據(jù)默認(rèn)保存在運(yùn)行該Web應(yīng)用程序的工作者進(jìn)程中,如果回收工作者進(jìn)程,則會(huì)造成丟失。

解決辦法:
修改配置,設(shè)置為不定時(shí)自動(dòng)回收該工作者進(jìn)程,比如設(shè)置為當(dāng)超出占用現(xiàn)有物理內(nèi)存60%后自動(dòng)回收該進(jìn)程。通過(guò)使用默認(rèn)應(yīng)用程序池,可以確保多個(gè)應(yīng)用程序間互相隔離,保證由于一個(gè)應(yīng)用程序的崩潰不會(huì)影響另外的Web應(yīng)用程序。還可以使一個(gè)獨(dú)立的應(yīng)用程序運(yùn)行在一個(gè)指定的用戶帳號(hào)特權(quán)之下。如果使用StateServer方式或者Sql Server數(shù)據(jù)庫(kù)方式來(lái)保存Session,則不受該設(shè)置的影響。

可能的原因2:
系統(tǒng)要運(yùn)行在負(fù)載平衡的 Web 場(chǎng)環(huán)境中,而系統(tǒng)配置文件web.config中的Session狀態(tài)卻設(shè)置為InProc(即在本地存儲(chǔ)會(huì)話狀態(tài)),導(dǎo)至在用戶訪問(wèn)量大時(shí),Session常經(jīng)超時(shí)的情況。引起這個(gè)現(xiàn)象的原因主要是因?yàn)橛脩敉ㄟ^(guò)負(fù)載平衡IP來(lái)訪問(wèn)WEB應(yīng)用系統(tǒng),某段時(shí)候在某臺(tái)服務(wù)器保存了Session的會(huì)話狀態(tài),但在其它的WEB前端服務(wù)器中卻沒(méi)有保存Session的會(huì)話狀態(tài),而隨著并發(fā)量的增大,負(fù)載平衡會(huì)當(dāng)作路由隨時(shí)訪問(wèn)空閑的服務(wù)器,結(jié)果空閑的服務(wù)器并沒(méi)有之前保存的Session會(huì)話狀態(tài)。

解決辦法:?
1.當(dāng)您在負(fù)載平衡的 Web 場(chǎng)環(huán)境中運(yùn)行 ASP.NET Web 應(yīng)用程序時(shí),一定要使用 SqlServer 或 StateServer 會(huì)話狀態(tài)模式,在項(xiàng)目中我們基于性能考慮并沒(méi)有選擇SqlServer模式來(lái)存儲(chǔ)Session狀態(tài),而是選擇一臺(tái)SessionStateServer 服務(wù)器來(lái)用戶的Session會(huì)話狀態(tài)。我們要在系統(tǒng)配置文件web.config中設(shè)置如下:?
<sessionState
mode="StateServer" cookieless="false" timeout="240"
stateConnectionString="tcpip=192.168.0.1:42424" stateNetworkTimeout="14400" />
還要添加一項(xiàng)?
<machineKey
validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/> ?

2. 我們同時(shí)還要在SessionStateServer 服務(wù)器中啟動(dòng)ASP.NET State Service服務(wù),具體設(shè)置:控制面板>>管理工具>>服務(wù)>>ASP.NET State Service,把它設(shè)為自動(dòng)啟動(dòng)即可。?

3. 每臺(tái)前端WEB服務(wù)的Microsoft“Internet 信息服務(wù)”(IIS)設(shè)置?
? ? ? ? ? ? ?要在 Web 場(chǎng)中的不同 Web 服務(wù)器間維護(hù)會(huì)話狀態(tài),Microsoft“Internet 信息服務(wù)”(IIS) 配置數(shù)據(jù)庫(kù)中 Web 站點(diǎn)的應(yīng)用程序路徑(例如,/LM/W3SVC/2)與 Web 場(chǎng)中所有 Web 服務(wù)器必須相同。大小寫也必須相同,因?yàn)閼?yīng)用程序路徑是區(qū)分大小寫的。在一臺(tái) Web 服務(wù)器上,承載 ASP.NET應(yīng)用程序的 Web 站點(diǎn)的實(shí)例 ID 可能是 2(其中應(yīng)用程序路徑是 /LM/W3SVC/2)。在另一臺(tái) Web 服務(wù)器上,Web 站點(diǎn)的實(shí)例 ID 可能是 3(其中應(yīng)用程序路徑是 /LM/W3SVC/3)。因此,Web 場(chǎng)中的 Web 服務(wù)器之間的應(yīng)用程序路徑是不同的。我們必須使Web 場(chǎng)Web 站點(diǎn)的實(shí)例 ID 相同即可。你可以在IIS中把某一個(gè)WEB配置信息保存為一個(gè)文件,其他Web 服務(wù)器的IIS配置可以來(lái)自這一個(gè)文件。您如果想知道具體的設(shè)置請(qǐng)?jiān)L問(wèn)Microsoft Support網(wǎng)站:
?
轉(zhuǎn)(4):丟失問(wèn)題集錦
SessionState 的Timeout),其主要原因有三種。
一:有些殺病毒軟件會(huì)去掃描您的Web.Config文件,那時(shí)Session肯定掉,這是微軟的說(shuō)法。
二:程序內(nèi)部里有讓Session掉失的代碼,及服務(wù)器內(nèi)存不足產(chǎn)生的。
三:程序有框架頁(yè)面和跨域情況。
第一種解決辦法是:使殺病毒軟件屏蔽掃描Web.Config文件(程序運(yùn)行時(shí)自己也不要去編輯它)
第二種是檢查代碼有無(wú)Session.Abandon()之類的。
第三種是在Window服務(wù)中將ASP.NET State Service 啟動(dòng)。
http://community.csdn.net/Expert/topic/3100/3100218.xml?temp=.4426386
還有可能就是你在測(cè)試期間改動(dòng)了,網(wǎng)站的文件。

下面是幫助中的內(nèi)容:
(ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconsessionstate.htm)
ASP.NET 提供一個(gè)簡(jiǎn)單、易于使用的會(huì)話狀態(tài)模型,您可以使用該模型跨多個(gè) Web 請(qǐng)求存儲(chǔ)任意數(shù)據(jù)和對(duì)象。
它使用基于字典的、內(nèi)存中的對(duì)象引用(這些對(duì)象引用存在于 IIS 進(jìn)程中)緩存來(lái)完成該操作。
使用進(jìn)程內(nèi)會(huì)話狀態(tài)模式時(shí)請(qǐng)考慮下面的限制:
使用進(jìn)程內(nèi)會(huì)話狀態(tài)模式時(shí),如果 aspnet_wp.exe 或應(yīng)用程序域重新啟動(dòng),則會(huì)話狀態(tài)數(shù)據(jù)將丟失。這些重新啟動(dòng)通常會(huì)在下面的情況中發(fā)生:
(1)在應(yīng)用程序的 Web.config 文件的 <processModel> 元素中,設(shè)置一個(gè)導(dǎo)致新進(jìn)程在條件被滿足時(shí)啟動(dòng)的屬性,例如 memoryLimit。
(2)修改 Global.asax 或 Web.config 文件。
(3)更改到 Web 應(yīng)用程序的 /Bin 目錄。
(4)用殺毒軟件掃描并修改 Global.asax 文件、Web.config 文件或 Web 應(yīng)用程序的 /Bin 目錄下的文件。
(5)如果在應(yīng)用程序的 Web.config 文件的 <processModel> 元素中啟用了網(wǎng)絡(luò)園模式,請(qǐng)不要使用進(jìn)程內(nèi)會(huì)話狀態(tài)模式。否則將發(fā)生隨機(jī)數(shù)據(jù)丟失。
?
我也碰到過(guò)。本機(jī)器上的Session或者Cookie丟失。
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="40"
/>
mode=""的三個(gè)屬性。本地/其他機(jī)器/sqlserver。
很多網(wǎng)絡(luò)架構(gòu),各個(gè)服務(wù)器之間都是通過(guò)一臺(tái)專門保存狀態(tài)的服務(wù)器(專門的狀態(tài)服務(wù)器)來(lái)保存比如說(shuō)session,cookie..
?
我以前遇到這種問(wèn)題,我用了以下幾個(gè)方法來(lái)解決。現(xiàn)在也沒(méi)有這種情況發(fā)生了。
1、release,不要debug發(fā)布。
2、<sessionState cookieless="true" 把cookieless設(shè)為true。因?yàn)榭蛻舳私胏ookie時(shí),session也無(wú)效。
3、在IIS中把Session過(guò)期時(shí)間延長(zhǎng)。
4、讓殺毒軟件不掃描bin文件夾下的文件和Web.Config文件。
以上我是不明不白的做的。不過(guò)Session正常使用了!呵呵~~我幸運(yùn)!
?
沒(méi)啥好講的,不要用Session好了,直接用Forms認(rèn)證把,
我前兩天的系統(tǒng)就是用這個(gè)搞定的,覺(jué)得挺好的。
剛碰到一個(gè)類似的問(wèn)題:在使用frameset的時(shí)候,session變量丟失。
在微軟的網(wǎng)站上找到了解決的方法
http://support.microsoft.com/kb/323752/EN-US/
不知道是否有用?

IIS--->>應(yīng)用程序連接池--->>屬性---->>[回收][性能][運(yùn)行狀況]里的各項(xiàng)參數(shù)盡量都往大的改^_^),我不知道改拉那個(gè)才對(duì)的,反正我改完后所有的session都好拉.客戶的網(wǎng)站和動(dòng)網(wǎng)論壇的后臺(tái)也跟著好拉。
?
轉(zhuǎn)(5): 模態(tài)窗口中打開(kāi)新窗口的session丟失
? ? ? ? ?一直被這個(gè)問(wèn)題郁悶。在窗口A中使用showModalDialog()打開(kāi)了一個(gè)新的模態(tài)窗口B。然后在B窗口中進(jìn)行一些業(yè)務(wù)操作,最后還需要根據(jù)業(yè)務(wù)操作打印一些表單,結(jié)果此時(shí)在B中調(diào)用open()方法就會(huì)出現(xiàn)session丟失的現(xiàn)象,提示用戶重新登陸。
? ? ? ? ?兩天來(lái)一直沒(méi)頭蒼蠅一樣不停的試驗(yàn)各種方法。如果在這個(gè)窗口中采用打開(kāi)非模態(tài)對(duì)話框的打開(kāi)方法showModelessDialog()就沒(méi)有任何問(wèn)題,但是直接使用open()方法就是不能達(dá)到想要的效果。在網(wǎng)上不停的google,到各大bbs尋找解答,提供的都是最簡(jiǎn)單的應(yīng)用。好不容易找到一篇文章,其中提到session對(duì)象的有效范圍,卻也沒(méi)有具體提到我遇到的問(wèn)題:
IE中: 
有效的窗品包括
? ? ? ? ?1.Session對(duì)象只在建立Session對(duì)象的窗口中有效。
? ? ? ? ?2.在建立Session對(duì)象的窗口中新開(kāi)鏈接的窗口 
無(wú)效的窗口包括
? ? ? ? ?1.直接啟動(dòng)IE瀏覽器的窗口
? ? ? ? ?2.不是在建立Session對(duì)象的窗口中新開(kāi)鏈接的窗口。(即作者在建立Session對(duì)象的A窗口彈出的B窗口上調(diào)用了open()方法。)
考慮只在建立session對(duì)象的窗口中有效,于是就在子窗口中重新使用session.setAttribute()方法,以為如此就可以成功,結(jié)果還是不行,郁悶。
? ? ? ? ?早上起來(lái)突然來(lái)了靈感,既然子窗口中造成了session丟失,在父窗口中是無(wú)論如何還存在著session的變量的,我可以不必在子窗口中重新設(shè)置session變量,而可以直接調(diào)用父窗口的javascript函數(shù)open()方法可能會(huì)到目的吧。不管如何先試試,結(jié)果果然如此。 ? ? ?很多時(shí)候問(wèn)題就是這樣的,想要偷懶,于是不自己鉆研,到處尋求解答,最后還是得靠自己來(lái)搞定。
========

ASP.NET一般處理程序訪問(wèn)Session問(wèn)題

https://www.cnblogs.com/yunfeifei/p/3674832.html

我們?cè)谑褂靡话闾幚沓绦虻臅r(shí)候,訪問(wèn)Session會(huì)出現(xiàn)如下錯(cuò)誤:

解決方案如下:

//引用命名空間
using System.Web.SessionState;

//繼承IRequiresSessionState接口,擁有Session的讀寫權(quán)限
//繼承IReadOnlySessionState接口,擁有Session的只讀權(quán)限
public class Handler1 : IHttpHandler,IRequiresSessionState
? ? {

? ? ? ? public void ProcessRequest(HttpContext context)
? ? ? ? {
? ? ? ? ? ? context.Response.ContentType = "text/plain";
? ? ? ? ? ? context.Response.Write("Hello World");
? ? ? ? }

? ? ? ? public bool IsReusable
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? }
? ? }
========
?

總結(jié)

以上是生活随笔為你收集整理的Asp.Net Session学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产精品免费视频一区二区 | 国产黄色免费电影 | 久久久久伊人 | 四虎在线观看 | 久久图 | 亚洲天堂在线观看完整版 | 在线免费视频 你懂得 | 黄网站色成年免费观看 | 国产精彩在线视频 | 最新国产视频 | 久久y | 国产亚洲精品日韩在线tv黄 | 91爱爱中文字幕 | 国产高清在线免费观看 | 狠狠色综合欧美激情 | 国产高清无线码2021 | 西西大胆免费视频 | 日本激情视频中文字幕 | 五月婷婷开心 | 91九色蝌蚪国产 | 四虎在线永久免费观看 | 国产成人精品一区二区三区免费 | 97视频免费在线看 | 日本aa在线 | 午夜久久福利 | 欧美肥妇free| 国产在线观看一 | 国产999在线 | 精品国产亚洲在线 | 天堂av影院 | 亚洲 成人 欧美 | 天天色综合1 | 国产麻豆精品在线观看 | 日韩在线观看第一页 | 一级片免费观看 | 日韩欧美视频在线播放 | 免费高清在线观看电视网站 | 亚洲欧美视频在线播放 | 久久久久久网 | 日日久视频 | 国产精品久久久久999 | 五月天久久精品 | 丁香六月婷婷综合 | 91黄色小视频| 97视频免费在线 | 最近中文字幕完整高清 | 福利区在线观看 | 日韩啪视频 | 在线观看免费高清视频大全追剧 | 亚洲成人精品av | 成人免费看黄 | 国产一级二级在线观看 | 99日韩精品| 欧美国产高清 | 久久精品亚洲精品国产欧美 | 精品美女视频 | 干综合网 | 精品人人人人 | 久久福利小视频 | 最新成人av | 青青河边草免费观看完整版高清 | 中文字幕亚洲综合久久五月天色无吗'' | 色九色| 国产精品久久久777 成人手机在线视频 | 夜色资源站国产www在线视频 | 久久精国产| 日韩v在线91成人自拍 | 亚洲美女视频网 | www.国产视频 | 亚洲一区二区三区四区精品 | 成人va视频 | 久久精品久久国产 | 91九色视频在线观看 | 久久不射电影院 | 色狠狠婷婷 | 伊人久久av | 婷婷丁香av | 欧美日韩一区二区三区在线观看视频 | 日韩精品高清不卡 | 黄色视屏在线免费观看 | 国产一区二区久久久久 | 午夜少妇一区二区三区 | 一区二区 久久 | 伊人婷婷激情 | 日韩精品中文字幕在线 | 亚洲一二三久久 | 久久久久久国产精品亚洲78 | 国产乱老熟视频网88av | 国产精品久久久久久久久久久久久 | 亚洲成人午夜在线 | 久久久午夜精品理论片中文字幕 | 91片黄在线观 | a黄色片在线观看 | 国产日韩欧美综合在线 | 五月婷婷丁香综合 | 亚洲一一在线 | 国产免费小视频 | 精品亚洲午夜久久久久91 | 九九热免费视频在线观看 | 日韩久久久久久久 | 国产成人亚洲精品自产在线 | 黄色app网站在线观看 | 三级黄免费看 | 午夜精品一区二区三区在线播放 | 欧美激情视频三区 | 国产精品毛片一区视频 | av在线电影免费观看 | 亚洲黄色app | 婷婷网址 | 亚洲激精日韩激精欧美精品 | 国产精品va在线观看入 | 9i看片成人免费看片 | 日韩精品欧美专区 | 色综合天天做天天爱 | 四虎免费av| 97av超碰 | 999国产 | 欧美一区二区伦理片 | 97视频在线观看视频免费视频 | 2020天天干夜夜爽 | 国产成人一级电影 | 国产91精品看黄网站 | 干干日日| 国产午夜三级一区二区三桃花影视 | 婷婷开心久久网 | 免费aa大片 | 欧美ⅹxxxxxx| 亚洲精品影视 | 欧美天堂视频在线 | 欧美精选一区二区三区 | 免费aa大片 | 免费视频黄 | a级一a一级在线观看 | 中文字幕av在线播放 | 91九色蝌蚪视频 | 亚洲视频六区 | 久久av免费| 黄色大片中国 | 午夜av片 | 日韩理论影院 | 天天爽综合网 | 日韩三级视频 | 久久这里只有精品1 | 久久久久久不卡 | 91综合视频在线观看 | 中文字幕在线看人 | 国产在线国偷精品产拍 | 久久婷婷影视 | 正在播放日韩 | 国产欧美精品xxxx另类 | 久久综合中文字幕 | 在线 成人 | 香蕉91视频 | 日韩一区二区三区视频在线 | 97免费| 天天爱天天射天天干天天 | 久久成人一区 | 国产又粗又猛又色 | 国产精品久久亚洲 | 六月激情婷婷 | 免费无遮挡动漫网站 | 最近中文字幕高清字幕免费mv | 99精品在线免费视频 | 五月综合网站 | wwwwww黄 | 欧美激情综合色综合啪啪五月 | 国产亚洲免费的视频看 | 伊人中文网 | 日韩免费一区二区三区 | 超碰在线97国产 | freejavvideo日本免费 | 欧美日韩免费网站 | 999免费视频| 久久男人中文字幕资源站 | 欧美aa级 | 国产视频首页 | 中文字幕丝袜美腿 | 偷拍精偷拍精品欧洲亚洲网站 | 久久久久国产精品一区 | 国产精品9999久久久久仙踪林 | 成人精品在线 | av在线永久免费观看 | 国产精品永久免费 | 精品国产乱码一区二区三区在线 | 日韩精品一区二区三区免费视频观看 | 久久成人国产精品 | 在线观看www. | 午夜丁香视频在线观看 | 免费在线观看一区二区三区 | 免费激情网 | 91精品视频在线看 | 国产精品毛片完整版 | 中文字幕一区二区三区四区视频 | 国产高清视频免费在线观看 | 国产在线精品二区 | 亚洲精品国产自产拍在线观看 | 国产精品久久久一区二区三区网站 | 亚洲色视频| 最新中文字幕在线播放 | 精品亚洲午夜久久久久91 | 久久精品国产v日韩v亚洲 | 国产精品9999久久久久仙踪林 | 欧美成人黄 | 欧美精品生活片 | 日黄网站 | 国产成人免费在线 | 亚洲国产字幕 | 综合国产在线观看 | 成年人黄色在线观看 | 一二三区视频在线 | av色综合| 亚洲精品自拍 | 亚洲高清在线 | 免费情趣视频 | 国产精品中文久久久久久久 | 日韩电影在线看 | 国产黄色视 | 午夜骚影 | 黄色三几片 | 最新高清无码专区 | 日韩三级视频在线观看 | 波多野结衣网址 | 久久乐九色婷婷综合色狠狠182 | 手机成人av在线 | 91亚洲欧美激情 | 免费看三片 | 成片视频在线观看 | 91看片麻豆 | 久久免费观看视频 | 国产色女人| 国产精品video爽爽爽爽 | 精品在线播放视频 | 激情视频免费观看 | 欧美成人在线网站 | 国产精品99久久免费黑人 | 国产日韩欧美在线看 | 国产精品麻豆免费版 | 免费在线观看视频a | 日韩毛片在线免费观看 | 91精品国产麻豆国产自产影视 | 国产 日韩 在线 亚洲 字幕 中文 | 私人av| 成人资源站 | 国产手机av | 九九九九九九精品 | 免费在线观看不卡av | 激情av五月婷婷 | 在线小视频你懂得 | 欧美日韩一级在线 | 久久99精品久久只有精品 | 欧美xxxxx在线视频 | 制服丝袜天堂 | 西西4444www大胆无视频 | 久久视频二区 | 精品一区二区三区香蕉蜜桃 | sesese图片| 日韩福利在线观看 | 91精品国产麻豆国产自产影视 | 国产精品永久在线 | 毛片一级免费一级 | 99久久精品一区二区成人 | 日韩免费三区 | 午夜久久久久 | 97久久精品午夜一区二区 | 亚洲日本va午夜在线影院 | 一区 二区 精品 | 国产精品视频99 | 中文字幕欧美日韩va免费视频 | 国产精品在线看 | 热久久99这里有精品 | 天堂av在线网站 | 中文字幕 91 | 日日夜夜天天久久 | 综合成人在线 | 欧美 激情 国产 91 在线 | 久久观看免费视频 | 亚洲理论电影网 | wwwwwww色| 久久人人爽人人片 | 成人免费视频视频在线观看 免费 | 黄色大全免费网站 | 国产免费av一区二区三区 | 国产免费又黄又爽 | 亚洲成人精品久久 | 91精品网站 | 日韩在线在线 | 97色婷婷人人爽人人 | www亚洲一区 | 久久久久亚洲精品 | 91九色网址| 国产精品久久久久久久免费大片 | 日韩系列 | 黄色免费网 | 国产精品一区二区久久国产 | 精品乱码一区二区三四区 | 日韩精选在线观看 | 日韩黄色一区 | 国产成人一级电影 | 成人在线黄色电影 | 国产99黄 | 久久久久久久网 | 最近在线中文字幕 | 成年人免费电影在线观看 | 天天综合91| 国产在线看| 久久久久高清毛片一级 | 人人爽人人爽人人 | 999超碰| 成年人在线免费视频观看 | 在线精品观看国产 | 高清av中文在线字幕观看1 | 欧美视频网址 | 久久精品3| 88av色| 国语黄色片| 西西44人体做爰大胆视频 | 国产亚洲91| 国产精品成人在线观看 | 亚洲午夜久久久影院 | 国产麻豆精品久久一二三 | 国产亚洲成av片在线观看 | 国内精品国产三级国产aⅴ久 | 99国产在线观看 | 日韩av成人在线观看 | 五月天国产 | 66av99精品福利视频在线 | 97在线播放| 福利视频区 | 黄色在线观看免费 | 亚洲国内精品在线 | 久久99热精品这里久久精品 | 91视频啪| 国产一级在线免费观看 | 国产一级精品在线观看 | 成人午夜剧场在线观看 | 精品国产乱码久久久久久天美 | 韩国av免费在线观看 | 六月丁香在线视频 | 久久久久一区二区三区四区 | 婷婷久久久 | 99色在线 | 青青河边草免费观看完整版高清 | 91污在线观看| 亚洲综合色婷婷 | 91爱在线 | 欧美成人性战久久 | 日韩视频在线播放 | 久久成人国产精品免费软件 | 久久精品国产亚洲精品 | 国产99一区视频免费 | 久久久免费毛片 | 最新av在线播放 | 麻豆精品视频 | 欧美精品中文在线免费观看 | 麻豆影视在线观看 | 精品国产1区二区 | 婷婷色中文 | 六月婷操| 在线国产小视频 | 91电影福利 | 999在线视频 | 亚洲综合在 | 国产精品国产亚洲精品看不卡 | 免费在线色电影 | 成人免费视频网址 | 激情av综合 | 麻豆国产网站入口 | 一区 二区电影免费在线观看 | 天天射综合 | 欧美日韩久久不卡 | 中文字幕国产精品 | 在线午夜电影神马影院 | 91丨九色丨蝌蚪丨老版 | 国产精品白丝av | 亚洲精品2区 | 99精品国产一区二区三区不卡 | 日韩av资源站 | 五月天婷婷在线播放 | 国产精品手机在线 | 香蕉久草在线 | 综合黄色网 | 国产福利a | 97av在线视频 | 日韩视频中文字幕在线观看 | 91av播放| 13日本xxxxxⅹxxx20 | 成人综合婷婷国产精品久久免费 | 亚洲成人中文在线 | 97色婷婷人人爽人人 | 91九色网站 | 久久免费视频这里只有精品 | 亚洲国产精品99久久久久久久久 | 国产1区2区3区精品美女 | 国产麻豆精品久久一二三 | 久久,天天综合 | 久久久久一区二区三区 | 少妇超碰在线 | 成人免费观看完整版电影 | 日韩视频一区二区在线观看 | 国产成人av网 | 久久久黄视频 | av色一区 | 色偷偷中文字幕 | 手机av在线网站 | 日韩中文字幕网站 | 亚洲专区在线播放 | 亚洲综合欧美激情 | 亚洲综合情 | 欧美成年网站 | av在线短片 | 日韩在线高清免费视频 | 国产流白浆高潮在线观看 | 超碰国产在线观看 | 99久久精品午夜一区二区小说 | 天天想夜夜操 | 蜜桃传媒一区二区 | 一级黄色视屏 | 日韩视频中文字幕 | 久久国色夜色精品国产 | 日韩中文字幕免费电影 | 欧美激情视频在线观看免费 | 天天爱天天插 | 美国av片在线观看 | 婷婷午夜激情 | 亚洲黄色一级电影 | 精品久久久久久久久久国产 | 中文字幕资源站 | 激情视频久久 | 91爱爱视频 | 91av手机在线观看 | 日日干美女 | 日韩在线资源 | 久久日韩精品 | 久99久精品 | www.av在线播放 | 色婷婷视频在线观看 | aa级黄色大片| 国产精品2019 | 国产精品麻豆果冻传媒在线播放 | 欧美日韩视频观看 | 亚洲国产网站 | 夜夜躁日日躁狠狠躁 | 日韩在线短视频 | www天天操 | 国产视频在 | av成人动漫在线观看 | 国产精品麻豆欧美日韩ww | 国产又粗又猛又爽 | 国产精品专区一 | 波多野结衣在线播放视频 | 深爱激情站 | 日韩欧美一区二区三区视频 | 亚洲美女免费精品视频在线观看 | 亚洲男男gaygay无套 | 中文字幕中文字幕在线中文字幕三区 | 黄p在线播放 | 五月婷婷国产 | 国产护士av | 亚洲精品国偷拍自产在线观看蜜桃 | av中文字幕第一页 | 韩日视频在线 | 黄色小网站在线 | 国产精品国产三级国产aⅴ无密码 | a√天堂中文在线 | 日本精品久久久久中文字幕5 | 亚洲精品综合在线 | 国产精品系列在线 | 青春草免费在线视频 | 香蕉日日| 久久最新 | 在线观看久久 | 欧美成人xxxx | av电影在线不卡 | 成人av资源网 | 成人观看视频 | 亚洲精品久久激情国产片 | 亚洲成人频道 | 国产精品免费在线播放 | 99热网站| 亚洲国产精品激情在线观看 | 亚洲天堂激情 | 国产精品99久久久久久人免费 | 久久激情五月婷婷 | 狠狠色丁香婷婷综合橹88 | 国产98色在线 | 日韩 | 成人av.com| 在线视频一二区 | 在线成人性视频 | 成人黄色小说在线观看 | 中文字幕av影院 | 国产精品99久久99久久久二8 | 久久国产剧场电影 | 国产精品成人一区二区 | 日本高清中文字幕有码在线 | 婷婷丁香综合 | 国产一在线精品一区在线观看 | 亚洲网站在线看 | 国产韩国日本高清视频 | 一本大道久久精品懂色aⅴ 五月婷社区 | 久草在线手机视频 | 免费在线黄网 | 日韩在线观看精品 | 国产69精品久久久久99 | 制服丝袜在线91 | 成人免费视频免费观看 | 亚洲国产精品免费 | www.av中文字幕.com | 天堂av官网 | 亚洲成年人在线播放 | 激情五月婷婷网 | 国产97视频| 91看片网址 | 日韩二区三区在线 | 日韩视频免费 | 瑞典xxxx性hd极品 | 91探花在线视频 | 精品麻豆入口免费 | www.久久成人 | 狠狠操狠狠操 | 免费av在线 | 国产自偷自拍 | 免费高清看电视网站 | 久久99久久99精品免视看婷婷 | 天天色天天上天天操 | 国产美女主播精品一区二区三区 | 国产 字幕 制服 中文 在线 | 免费观看9x视频网站在线观看 | av一级一片 | 最近免费观看的电影完整版 | 激情久久五月 | 日本午夜在线观看 | 欧美午夜理伦三级在线观看 | 色综合亚洲精品激情狠狠 | 免费亚洲黄色 | 怡红院成人在线 | 五月婷婷激情六月 | 国产亚洲精品久久久网站好莱 | 夜夜高潮夜夜爽国产伦精品 | 欧美日韩国产一二三区 | 欧美日韩视频在线观看一区二区 | 国产破处在线播放 | 在线观看免费高清视频大全追剧 | 日韩视频欧美视频 | 欧美成亚洲 | 日韩在线观看高清 | 久久a级片 | 久综合网| 久久色网站 | 日韩视频www | 在线色亚洲 | 一级黄色av | 国内精品视频在线播放 | 这里只有精品视频在线观看 | 国产精品原创 | 亚洲精品美女在线观看 | 天堂在线一区 | 91最新中文字幕 | 丁香久久综合 | 久久艹99| 精品视频久久久久久 | 黄色免费观看视频 | 久久情侣偷拍 | 久久免费国产电影 | 人人爱人人爽 | 国产成人三级三级三级97 | 五月婷视频 | 久久精品久久久久电影 | 欧美一级视频免费看 | 一本到视频在线观看 | av高清一区二区三区 | 日韩免费电影在线观看 | 欧美极品一区二区三区 | 亚洲国产精品99久久久久久久久 | 少妇搡bbbb搡bbb搡忠贞 | 麻豆国产精品va在线观看不卡 | 成人在线电影观看 | 少妇高潮冒白浆 | 久草在线视频在线观看 | 婷婷综合激情 | 日韩欧美在线观看一区二区 | 国产97在线观看 | 亚洲区视频在线观看 | 九九热精品视频在线播放 | 在线成人观看 | 国产成人在线观看免费 | 天天干 夜夜操 | 精品一区 在线 | 亚洲黄色精品 | 国产精品婷婷午夜在线观看 | 日韩精品亚洲专区在线观看 | 久草网站在线 | 日韩精品字幕 | 在线电影日韩 | 国产黄色片免费观看 | 在线观看网站av | 亚洲精品高清视频 | 91在线九色 | 色视频网站在线 | 午夜视频在线观看一区二区 | 97av影院 | 精品欧美一区二区三区久久久 | 久久精品99久久 | 日韩高清精品一区二区 | 黄色软件在线观看视频 | 国产高清免费观看 | 日韩综合第一页 | 国产小视频网站 | 日本中文字幕视频 | 婷婷丁香色| 97精品一区| 免费看黄色小说的网站 | 99精品视频在线免费观看 | 国产精品国内免费一区二区三区 | 黄色网址在线播放 | 亚洲精品视| 天天干,天天操,天天射 | 日日夜夜狠狠操 | 日韩成人高清在线 | 九九欧美视频 | 日韩精品视频在线观看免费 | 国产成人一区二区三区免费看 | 久久精品毛片基地 | 日韩视频中文字幕在线观看 | 91九色最新 | 国产精品欧美一区二区三区不卡 | 亚洲免费不卡 | 久久精品国产久精国产 | 激情综合电影网 | 人人舔人人爱 | 成年人黄色在线观看 | 亚洲理论视频 | 中文字幕在线观看完整版电影 | 欧美一级黄色网 | 91亚色视频 | 亚洲综合成人在线 | 午夜视频色 | 久久久精品国产一区二区 | 91影视成人 | 国内精品久久久精品电影院 | 美女久久久久久久 | 免费看的国产视频网站 | av日韩精品 | 国产高清视频免费观看 | 久久手机在线视频 | 欧美日韩在线观看一区二区 | 久久九九免费视频 | 最新精品视频在线 | 91精品无人成人www | 麻豆91在线播放 | 日本久久99| 久久久久国产一区二区三区四区 | 国产精品18久久久久久vr | 九九在线精品视频 | 国产手机在线观看视频 | 丁香婷婷网 | 久久69精品久久久久久久电影好 | 国产精品久久久久久婷婷天堂 | 在线观看黄av | 色吊丝在线永久观看最新版本 | 亚洲精品视频在线播放 | 伊人色综合网 | 久久一区91 | 精品成人久久 | 欧美激情亚洲综合 | 中文字幕在线色 | 久久婷婷国产色一区二区三区 | 日本系列中文字幕 | 中文字幕一区二区三区精华液 | 天天操天天色天天射 | 成人av免费播放 | 91完整版在线观看 | 成人啪啪18免费游戏链接 | 在线a亚洲视频播放在线观看 | 久久精品4 | 婷婷深爱| 久草在线观看资源 | 亚洲va天堂va欧美ⅴa在线 | 伊人网综合在线观看 | 国产一区二区在线免费视频 | 欧美日韩免费观看一区=区三区 | 亚洲狠狠婷婷综合久久久 | 欧美三级高清 | 91网址在线 | 天天添夜夜操 | 中文在线天堂资源 | 91视频传媒| 精品在线视频观看 | 欧洲激情在线 | 国产在线观看你懂得 | 国产精品九九视频 | 中文字幕视频在线播放 | 在线观看亚洲精品视频 | 精品一区二区亚洲 | 久久经典视频 | 精品在线视频播放 | 日韩国产精品一区 | 国产手机在线播放 | 国产黄在线看 | 久久久久国产精品一区二区 | 国产手机视频精品 | 97在线公开视频 | 91人人视频在线观看 | 亚洲国产黄色片 | 五月激情姐姐 | 国产精品久久久久久久免费观看 | 天天射综合 | 丰满少妇一级片 | 亚洲黄色在线观看 | 中文字幕在线不卡国产视频 | 久久久久久久国产精品影院 | 免费成人短视频 | 在线观看日韩视频 | 四虎国产精品永久在线国在线 | 国产午夜在线 | 激情五月***国产精品 | 久久久私人影院 | 色婷婷www | 97综合在线 | 在线国产视频 | 黄在线免费看 | 中文字幕一区二区三区久久蜜桃 | 国产不卡在线看 | 91在线麻豆 | 18久久久久久 | 成人一级片视频 | 国产亚洲视频在线 | 狠狠黄| 久久精品三 | 日本精品视频网站 | 特级免费毛片 | 一级黄色在线视频 | 成人免费看视频 | 黄色福利网 | 中文字幕一区二区在线播放 | 色婷婷综合久久久 | av不卡中文字幕 | 99精品国产99久久久久久福利 | 日韩二区三区在线 | 免费99视频 | 欧美激情在线网站 | 欧美男男激情videos | 精品久久久成人 | 天天射天天舔天天干 | 久久香蕉国产精品麻豆粉嫩av | 在线观看中文 | 最近中文字幕mv | 日韩一区二区三区免费视频 | 免费网站在线观看人 | 国产成人免费观看久久久 | 九九视频免费在线观看 | 亚洲精品久久久久58 | 91精品日韩 | 亚洲精品网址在线观看 | 久久综合狠狠狠色97 | 99久久99热这里只有精品 | 亚洲免费公开视频 | 成人av手机在线 | 欧美激情视频一二区 | 欧美一级大片在线观看 | 欧美成人手机版 | 欧美日韩色婷婷 | 在线视频一区观看 | 国产精品久久久久久久婷婷 | 在线观看一二三区 | 欧美黄在线 | 97超碰国产在线 | 国产成在线观看免费视频 | 日韩精品中文字幕久久臀 | 成人午夜黄色影院 | 特级片免费看 | 99精品视频网站 | av成人在线看 | 东方av在 | 亚洲成年片| 国产视频在线观看免费 | 日本aaaa级毛片在线看 | www.五月天婷婷 | 国产在线 一区二区三区 | 在线看的毛片 | 国产精品 国产精品 | 久久99国产精品免费网站 | 亚洲精品中文在线观看 | 日本一区二区三区免费看 | 久久精品亚洲综合专区 | 天天爱天天射天天干天天 | 国产xxxx做受性欧美88 | 狠狠狠色丁香综合久久天下网 | 天天天天天干 | 丁香久久久 | 狠狠狠色丁香婷婷综合久久五月 | 激情中文在线 | 亚洲精品中文字幕视频 | 日韩在线观看视频一区二区三区 | 日韩欧美在线观看一区二区三区 | 麻豆一区二区 | 久久久久一区二区三区 | 亚洲最快最全在线视频 | 中文字幕中文字幕在线一区 | 天天狠狠 | 午夜精品久久久久久久爽 | 色视频在线 | 天天插天天操天天干 | 四虎影视4hu4虎成人 | a视频在线播放 | 国产麻豆精品在线观看 | 99精品国产99久久久久久福利 | 亚洲欧美综合精品久久成人 | 九色自拍视频 | 黄色www免费 | 最近中文字幕完整视频高清1 | 久国产在线播放 | 成人在线免费视频观看 | 国产无限资源在线观看 | 波多野结衣在线播放视频 | 超碰97国产精品人人cao | 国产欧美中文字幕 | 小草av在线播放 | 日本久久中文字幕 | 日韩有码第一页 | 亚洲国产中文字幕在线观看 | 日韩小视频网站 | 9999激情 | 国产精品毛片一区视频播 | 91视频免费看片 | 亚洲精品天天 | 国产精品久久久久久久久久久免费看 | 91九色porny在线 | 成人av播放 | 中文字幕亚洲欧美日韩2019 | 成年人视频在线 | 久久99国产精品免费网站 | 国产成人在线观看 | 美女黄频在线观看 | 国产精品一区二区三区四区在线观看 | 国产高清在线免费 | 天堂av色婷婷一区二区三区 | 午夜美女福利直播 | 91免费试看 | 五月婷婷在线视频 | 人人揉人人揉人人揉人人揉97 | 超碰在线个人 | 国产高清免费观看 | 毛片一二区 | 日韩一区二区三免费高清在线观看 | 一区三区视频 | 国产精品系列在线 | 成年人看片网站 | 成年人黄色av | 国产精品理论片在线播放 | 亚洲专区免费观看 | 成人一区二区三区在线观看 | 久久免费视频播放 | 国内三级在线观看 | 国产在线久草 | 超碰免费在线公开 | 国产精品一级视频 | 久久电影网站中文字幕 | 精品一二三四在线 | 国产精品中文久久久久久久 | 国产一线二线三线性视频 | 最新黄色av网址 | 在线观看av国产 | 91精品国产九九九久久久亚洲 | 国产特级毛片aaaaaa高清 | 中文视频一区二区 | 在线观看免费视频 | 色综合天天做天天爱 | 国产 成人 久久 | av成人在线观看 | japanesexxxxfreehd乱熟 | 国产精品高 | 中国一级片在线 | 国内精品免费 | 在线观看成人国产 | 色国产视频| 美女免费网视频 | 国产精品亚洲片在线播放 | 亚洲h在线播放在线观看h | 丁香婷婷色月天 | 国产精品视频你懂的 | 日韩高清成人 | 欧美国产精品一区二区 | 伊人丁香 | 日本aaa在线观看 | 精品夜夜嗨av一区二区三区 | 久久99精品国产麻豆宅宅 | 日产乱码一二三区别在线 | 91在线视频一区 | 亚洲九九| 伊人网综合在线观看 | 91香蕉视频好色先生 | 免费在线观看国产精品 | 91日韩在线播放 | 日韩91精品 | 97精品国产97久久久久久春色 | 97超碰免费在线观看 | 欧亚日韩精品一区二区在线 | 色999精品 | 国产精品免费在线观看视频 | 91精品婷婷国产综合久久蝌蚪 | 色婷婷激情综合 | 精品国产视频一区 | 成人影片免费 | 亚洲精品国产拍在线 | 欧美坐爱视频 | 中文字幕在线视频一区 | 色婷婷97| 在线亚洲高清视频 | 国产视频精品久久 | 免费av成人在线 | 东方av免费在线观看 | 日韩免费在线网站 | 91在线视频导航 | 91超碰在线播放 | 国产成人精品av在线观 | 天天干夜夜操视频 | 欧美一级艳片视频免费观看 | 亚洲精品国偷自产在线91正片 | 中文伊人 | 国产精品视频免费观看 | 伊人午夜视频 | 免费av网站观看 | 久久综合五月婷婷 | 天天射综合| 日韩电影中文 | 天天操比 | a天堂中文在线 | 超碰在线97免费 | 人人爽人人 | 欧美综合在线视频 | 国产精品久久久久一区二区三区共 | 很黄很污的视频网站 | 激情五月婷婷网 | 久久se视频| 丰满少妇在线观看 | 国产精品免费观看在线 | 国产蜜臀av | 91丨九色丨国产在线观看 | av黄色一级片 | 成人av电影网址 | 亚洲成人资源网 | 亚洲三级黄色 | 亚洲永久国产精品 | 午夜精品久久久久久久久久久久 | 日韩素人在线观看 | 欧美韩日精品 | 一级黄色片在线免费观看 | 亚洲综合黄色 | 欧美在线观看视频一区二区三区 | 国产精品片| 91.精品高清在线观看 | 99 精品 在线 | 香蕉视频久久久 | 免费观看性生活大片 | 伊人婷婷 | 欧美国产日韩在线视频 | 久久久久在线视频 | 成人性生活大片 | 热99在线视频 | 天天操天 | 一级片黄色片网站 | 欧美激情第一页xxx 午夜性福利 | 亚洲精品视频网 | www久久国产 | 亚洲年轻女教师毛茸茸 | 国产精品国产三级国产aⅴ9色 | 九九日韩 | 久久亚洲精品国产亚洲老地址 | 天天操天天爽天天干 | 91精品国产91p65 | 一区在线观看 | 久久久精品99 | 成人在线免费看视频 | 亚洲h视频在线 | 91av成人 | 久草热久草视频 | 九九在线视频免费观看 | 精品久久久久一区二区国产 | 国产精品热视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 日韩三区在线 | 九九在线国产视频 | 国产精品一区在线观看你懂的 | 99欧美| 丁香导航 | 欧美日韩视频在线观看免费 | 国产精品自产拍在线观看中文 | 91福利试看 | 国产亚洲一区二区在线观看 | 国产精品一区二区在线播放 | 国产一区二区播放 | www久久九| 手机看片1042| 高清不卡一区二区三区 | 免费久久99精品国产婷婷六月 | 人人天天夜夜 | 97超级碰碰碰视频在线观看 | 成人黄色在线播放 |