进程内session:
缺点:当访问量大的时候,会导致进程内session的重启
优点:存储速度快
进程外session:
01.将session存储在状态服务器中 asp.net state service
缺点:当访问量大的时候,会导致session池重启,数据也容易丢失
优点:存取速度相较于数据库来说更快
02.将session存在数据库中(常用)
缺点:会频繁访问数据库,加重数据库服务器的负担
优点:session会很稳定
进程内:session对象是被保存在进程的内存中,当执行如下语句时Session["data"]="123" ,“123”立即被写入Session变量中。
进程外:当前会话的所有Session变量都是在请求开始时从存储空间读入,在请求结束时才向存储空间反映Session值的变化,从请求开始到结束期间发生异常,请求会被终止,这样在此期间对Session变量的改变不会反映到存储区间。
进程外Session的配置:(都是在system.web节点下配置)只能使用其中任一个
<!--进程外session配置到状态服务器中--> <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"> </sessionState> <!--将session配置到数据库--> <sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="server=.;database=aspnetDB;uid=***;pwd=***;">
其中,数据库的配置需要以下操作:
打开VS开发人员命令提示,输入:
aspnet_regsql -U sa -P 123 -ssadd -sstype c -d SessionTestDb(此处是自定义Session数据库名称)