国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ASP.NET狀態(tài)管理——Session篇

      在Web開發(fā)的早期,Web頁面彼此是相互獨立的。它們很少需要了解其他頁面的內(nèi)容(如果需要了解,一般通過查詢字符串或通過Form的方式傳遞)。隨著Internet的發(fā)展,Web頁面也變得更加復(fù)雜,僅僅瀏覽一個頁面查看它的內(nèi)容是遠遠不夠的?,F(xiàn)在的Web站點的設(shè)計都希望考慮工作流的問題——即需要從一個頁面移動到另一頁面。

      因此會話狀態(tài)(Session State)就應(yīng)運而生。會話狀態(tài)變量允許Web頁面保存和用戶瀏覽器的具體一次“會話”的相關(guān)的信息。在同一次會話中接下來的頁面可以按需要引用這些會話變量。該信息被綁定到用戶瀏覽器會話。一旦瀏覽器會話關(guān)閉,該信息就被刪除。該信息存儲在Web服務(wù)器上,在客戶端瀏覽器的所有調(diào)用中都是一種保存的。

     當(dāng)回送發(fā)生時,ASP.NET能夠使用它在用戶第一次連接時創(chuàng)建的唯一的SessionID(SessionID是在服務(wù)器上對客戶端瀏覽器唯一的標(biāo)識,每個客戶端瀏覽器有一個對應(yīng)的SessionID)來檢索會話信息(如果瀏覽器支持Cookie,并且ASP.NET Web頁面配置為使用Cookie);或者通過被ASP.NET追加到URL中的一個加密的字符串來檢索會話信息(對于瀏覽器不支持Cookie或者ASP.NET Web 頁面配置為不使用Cookie的情況)。

    Session在web.config的配置:

<sessionStatemode="[Off|InProc|StateServer|SQLServer|Custom]"timeout="number of minutes"cookieName="session identifier cookie name"cookieless="[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"regenerateExpiredSessionId="[True|False]"sqlConnectionString="sql connection string"sqlCommandTimeout="number of seconds"allowCustomSqlDatabase="[True|False]"useHostingIdentity="[True|False]"stateConnectionString="tcpip=server:port"stateNetworkTimeout="number of seconds"customProvider="custom provider name"><providers>...</providers></sessionState>
    
   

       Session的存儲模式:InProc,StateServer,SQL Server,Custom,Off.默認(rèn)存儲和模式為InProc。

      InProc 模式,此模式將會話狀態(tài)存儲在 Web 服務(wù)器上的內(nèi)存中,將會話狀態(tài)值和變量存儲在本地 Web 服務(wù)器上的內(nèi)存中。

        StateServer模式,將會話狀態(tài)存儲在一個名為 ASP.NET狀態(tài)服務(wù)的單獨進程中。這確保了在重新啟動 Web 應(yīng)用程序時會保留會話狀態(tài),并讓會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個 Web 服務(wù)器。使用該模式需設(shè)定ASP.NET狀態(tài)服務(wù)為啟動。ASP.NET狀態(tài)服務(wù)進程是獨立于 ASP.NET 輔助進程或 IIS 應(yīng)用程序池的單獨進程。使用此模式可以確保在重新啟動 Web 應(yīng)用程序時保留會話狀態(tài),并使會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個 Web 服務(wù)器。若設(shè)置StateServer模式,需設(shè)置stateConnectionString屬性。如:

<configuration><system.web><sessionState mode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"cookieless="false"timeout="20"/></system.web></configuration>

      SQLServer模式將會話狀態(tài)存儲到一個 SQL Server 數(shù)據(jù)庫中。這確保了在重新啟動 Web 應(yīng)用程序時會保留會話狀態(tài),并讓會話狀態(tài)可用于網(wǎng)絡(luò)場中的多個 Web 服務(wù)器。若要使用 SQLServer 模式,必須首先確保在 SQL Server 上安裝了 ASP.NET 會話狀態(tài)數(shù)據(jù)庫。

<configuration><system.web><sessionState mode="SQLServer"sqlConnectionString="Integrated Security=SSPI;datasource=ASPNETServer;" /></system.web></configuration>
     
     Custom 模式,此模式允許您指定自定義存儲提供程序。

        Off 模式,此模式禁用會話狀態(tài)。

 

       在ASP.NET中,Session是一個帶有方法和屬性的.NET對象,可以在一個.NET會話狀態(tài)對象中存儲任何數(shù)據(jù)類型(包括用戶定于的類和結(jié)構(gòu))。但是,存儲數(shù)據(jù)也是以性能為代價,代價的大小取決于保存會話信息的多少,還是數(shù)據(jù)的類型信息。

 

簡單示例

       創(chuàng)建兩個頁面:一個頁面(SessionAdd.aspx)來添加Session的Key和Value,另一個(SessionResult.aspx)來顯示Session的信息。

       SessionAdd的代碼:

    <div>Session Variable:<asp:TextBox ID="txtSessionVariable" runat="server" /><br/>Value: <asp:TextBox ID="txtSessionValue" runat="server" /><br /><asp:Button ID="btnAdd" runat="server" Text="Add Session"onclick="btnAdd_Click" /><asp:Button ID="banView" runat="server" Text="View Session"onclick="banView_Click" /></div>
 
    后臺代碼:
    protected void btnAdd_Click(object sender, EventArgs e){Session[txtSessionVariable.Text] = txtSessionValue.Text;}protected void banView_Click(object sender, EventArgs e){Server.Transfer("SessionResult.aspx");}
    頁面效果:
  
 
    SessionResult.aspz頁面:
    <div><asp:TextBox ID="txtSessionResult" runat="server" TextMode="MultiLine" Width="240px" Height="200px" /><br /><asp:Button ID="btnBack" runat="server" Text="Clear and Back"onclick="btnBack_Click" /></div>
 
    后臺代碼:
   protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){StringBuilder sb = new StringBuilder();foreach (String strKey in Session.Keys){sb.Append(strKey);sb.Append("=");sb.Append(Session[strKey]);sb.Append("\n");}txtSessionResult.Text = sb.ToString();}}protected void btnBack_Click(object sender, EventArgs e){Session.Clear();Server.Transfer("SessionAdd.aspx");}
    頁面效果:
    
 
    以上的列子簡單說明Session的添加,查看,清空。
    基于性能的考慮,Session不應(yīng)該存儲任何依賴于外部鏈接性或關(guān)鍵資源的內(nèi)容。
    
    
    
Tag標(biāo)簽: ASP.NET,性能,Session
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入理解asp.netSessionState
ASP.NET Session丟失問題解決方案總結(jié)及判斷Session是否過期【轉(zhuǎn)載】
如何在ASP.NET環(huán)境下長期保存ASP.NET頁面的session變量
單點登錄、統(tǒng)一認(rèn)證
無法序列化會話狀態(tài)。請注意,當(dāng)會話狀態(tài)模式為“StateServer”或“SQLServer”時,不允許使用無法序列化的對象或 MarshalByRef 對象。
ASP.NET中Session的狀態(tài)保持方式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服