關於使用詳解ASP.NET State Service


關於使用詳解ASP.NET State Service

ASP.NET State Service服務如果啟動可以解決這個問題,它會生成一個aspnet_state.exe進程,這個就是Session信息的進程。只要這個進程在,就算是重啟了IIS,站點的Session也不會丟失。

用這個模式注意修改web.config

<sessionState     
      
  mode="InProc"     
      
  stateConnectionString="tcpip=127.0.0.1:42424"     
      
  sqlConnectionString="data   source=127.0.0.1;Trusted_Connection=yes"     
      
  cookieless="false"     
      
  timeout="20"     
      
/> 


要把mode的值改為 StateServer

 

關於保存session三種模式(InProc,StateServer,SQLServer)

asp.netsession使用一個唯一的120位標識符跟蹤會話,這個標識符由httpmodule鏈上的SessionStateModule(System.web.SessionState)負責產生,並且保存會話信息,但是會話信息並不是SessionStateModule保存的,而是由狀態提供程序保存的。

狀態提供程序可以是實現HttpSessionState接口的任意類,也就是可以自定義如何處理會話狀態。

asp.netsession3種預定義的狀態模式,分別為InProc(默認),StateServer(開單獨的線程),SQLServersqlserver數據庫)

InProc是默認選項,對小型網站有意義。在web農場中InProc不能正常工作,需要使用StateServer或者Sqlserver狀態服務才能在服務器間共享狀態。

 

使用StateServersqlserver狀態服務需要注意幾個問題:

A)使用StateServerSqlServer狀態服務時,存儲到session中的對象必須支持序列化。否則存儲到session的對象無法傳送到狀態服務和存儲到數據庫。

B)如果在web農場使用asp.net,需要一些額外的配置保證所有web服務器同步。否則,服務器以不同的方式編碼會話狀態信息。解決該問題的方式為修改machine.config文件的<machineKey>節點,確保服務器使用相同的設置。

C)不使用InProc,SessionStateModuel.End事件就會忽略,所以,global.asaxhttp模塊所有該事件的處理程序將被忽略。

 

 

文章來自學IT網:http://www.xueit.com/html/2010-05/21-42551412201052221541162.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM