asp.net

不显示删除回复显示所有回复显示星级回复显示得分回复 asp.net中的状态管理sessionState Mode="StateServer" 和 Mode="InProc"的区别?

2010-08-07

我在测试二者的区别时分别把sessionState设置为: "StateServer "   和   Mode= "InProc " 在 "StateServer "模式下也启动了ASP.net   State   service服务。
但是在两种模式下,我按同样的代码:
private   void   Button1_Click(object   sender,   System.EventArgs   e)
                {
                        Session[ "sessionname "]   =   edtName.Text;
                }
                private   void   Button2_Click(object   sender,   System.EventArgs   e)
                {
                        if(Session[ "sessionname "]   !=   null)
                                lblSession.Text   =   Session[ "sessionname "].ToString();
                        else
                                lblSession.Text   =   "no   session ";
                }
button1保存值到session里,button2从session中取出显示在label上。

我分别在: "StateServer "   和   Mode= "InProc "两种情况下存入session-》关闭IIS服务-》重新启动IIS-》点击button2取回session中的值。
但是得到的结果都是一样的,我看msdn上说 "InProc "方式应该在关闭iis时丢失session中的变量啊
???????

回答:

两种方式在编程上面应该没有什么区别,他们一个是进程内的一个是独立进程的,进程内的是指Session的值都保存在aspnet_wp.dll进程里面,进程外的是指保存在一个单独的进程里面叫aspnet_state.dll里面!

 

StateServer要求你的StateServer服务必须已经启动
InProc不需要

程序运行期间,你的程序重新编译或者改动过webconfig的时候
InProc   丢失,需要重新登陆
StateServer不会丢失,除非停掉此服务或者默认的20分钟到期

 

再补充一点,Session_OnEnd   事件仅支持进程内会话状态模式。如果使用状态服务器或   SQL   Server   模式,则不会引发该事件。

 

StateServer状态服务器管理,设置管理状态的服务器IP地址 ,InProc   为进程中管理,指的是在同一进程中,如果是新进程,则状态将丢失