in

SDT Community Server

SDT Forums, Blogs, Photos server.

king_huang

November 2006 - Posts

  • 怎么样才能使用单独进程保存你的session

    asp.net 2.0默认的情况下,应用程序的session回跟应用程序一起绑定到aspnet_wp.exe(win 2000win xp)或者是w3wp.exe (win 2003), 那么这样就有问题了,当我们应用程序内部出现错误或者其他错误时,就会导致aspnet_wp.exe或者w3wp.exe出错,这样应用程序的session就回全数丢失掉,那样对于我们极其不方便。


           
    后来查找了一下资料发现asp.net 2.0有这样一个机制,就是可以由用户自己选择用什么方式来保存应用程序的session。这个就是我们下面要讲的SessionStateMode

     

    SessionStateMode 是一个枚举类型,下面是该类型的成员及状态模式:

     

    InProc 模式,此模式将会话状态存储在 Web 服务器上的内存中。这是默认设置。

     

    StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

     

    SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

     

    Custom 模式,此模式允许您指定自定义存储提供程序。

     

    Off 模式,此模式禁用会话状态。

     

    为了解决上面说到的问题,我们选用StateServer模式,下面是启用该模式的具体说明:

     

    StateServer 模式将会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程。使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。

    若要使用 StateServer 模式,必须首先确保 ASP.NET 状态服务运行在用于存储会话的服务器上。ASP.NET 状态服务在安装 ASP.NET .NET Framework 时作为一个服务进行安装。ASP.NET 状态服务安装在以下位置:

    systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe

    (具体就是启动:ASP.NET State Service 服务)

       若要将某个 ASP.NET 应用程序配置为使用 StateServer 模式,请在该应用程序的 Web.config 文件中执行以下操作:

    sessionstate元素的 mode 属性设置为 SQLServer

     

    stateConnectionString属性设置为 tcpip=serverName:42424

     

    这里要注意:stateConnectionStringservername要跟IIS的虚拟目录的设置要一致,如果是本地的话请设置为:localhost或者127.0.0.1,如果是远程服务器的话,请设置为远程服务器的IP地址。(虽然是罗嗦了点,但是还是说完了)

     

Copyright SDT, 2006-2009. All rights reserved.