相同的代码,在服务器本地访问就没问题,但远程访问就出现session丢失的问题。什么原因?怎么解决呢?望高手指教。session服务器

解决方案 »

  1.   

    是每次都取不到还是有时候能取到, 有时候取不到!如果是过期问题的,简单的解决方法是,除了你代码里面设置session过期时间之外,还要在IIS配置session的回收时间,具体方法自己去baidu!如果想永久解决这个问题的话,可以考虑将session模式改为存在数据库,这样比较保险!
      

  2.   

    关键是服务器本地没问题啊,但在其他计算机上就会丢失session
      

  3.   

    我是用redirect跳转之后,session就丢了
      

  4.   

    有好多原因都可能造成session的丢失。有些情况是无法解决的。如果你借助于session做的工作很重要的话建议用其它方式实现。
      

  5.   

    还有个奇葩的问题,这种问题是在用谷歌浏览器时出现的,火狐和IE就没这问题。真不知道是iis服务器的原因还程序的原因。
      

  6.   

    因为aspnet_wp.exe进程或应用程序域重新启动时,会导致Session数据的丢失。引发这种情况的原因可能为:
    q      修改了Global.asax文件。
    q      修改了Web.config文件。
    q      更改WEB应用程序的bin目录路径。
    q      杀毒软件扫描(可能发生修改)了Global.asax 文件、Web.config文件或Web应用程序的Bin目录下的文件。
    q      在Web.config配置文件的<processModel>元素中,可设置导致新进程在条件被满足时启动的属性,不过这并不属于BUG。
    在ASP.NET的应用程序中,Web.config配置文件中关于Session的一般设置如下:
    <sessionState mode='InProc'
    stateConnectionString='tcpip=127.0.0.1:42424'
    sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60' />
    以上代码中的<sessionState />节点中有个“mode”属性,其取值可以为“InProc”、“StateServer”和“SQLServer”,默认值为“InProc”。默认值就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),在系统发生某些意外事件时该进程可能会重启,所以造成了存储在该进程内的Session丢失。相对而言,如果“mode”属性取值为“StateServer”或“SQLServer”,即可避免进程重启后丢失Session值的情况,因为这两种方法存储Session值是进程外的。
    首先将“mode”属性修改为“StateServer”。StateServer是本机的一个网络服务,在服务管理器中可以看到这个名为“ASP.NET State Service”的服务,默认情况是不启动的。如果要使用StateServer方式存储Session值,当“mode”属性修改为“StateServer”之后,编程者需要启动“ASP.NET State Service”的服务。在单击Windows XP操作系统的“开始”菜单,选择“运行”命令,输入“services.msc”,然后单击“确定”按钮即可打开服务管理器