实践证明以 .net 技术开发的网站仅以 sessison 存储会员信息,是太不可靠了,请大家讨论一下,在 .net 下何种方式验证会员是最合理和最稳定,最成熟的方案!!1.传统 session   (在 .net 下,太不稳定的,我是深受其爱!!)
2.传统 cookies   (除了安全性上有些说道外,感觉没什么其它的毛病吧,不过,可以加密啊)
3. session 和 cookies 结合  (没用过,不知道好不好)
3 .net 下的 forms 验证 (感觉就是用cookies,只不过,把功能做的全一些,集成度高一些)等多种方案,各位高手在实际项目中比较成熟的应用方案,拿出来给大家分享一下,省得我们这些菜鸟走弯路!

解决方案 »

  1.   

    本来我是从来不抄书的,不过这个问题实在是很多次了,而且只要读msdn的人就应该看到这一节,因为这一节就是专门讲“会话状态”的,意思也很清楚。*********************************  msdn  *********************************
    会话状态存储ASP.NET 提供一个简单、易于使用的会话状态模型,您可以使用该模型跨多个 Web 请求存储任意数据和对象。它使用基于字典的、内存中的对象引用(这些对象引用存在于 IIS 进程中)缓存来完成该操作。使用进程内会话状态模式时请考虑下面的限制: 使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。这些重新启动通常会在下面的情况中发生: 
    在应用程序的 Web.config 文件的 <processModel> 元素中,设置一个导致新进程在条件被满足时启动的属性,例如 memoryLimit。 
    修改 Global.asax 或 Web.config 文件。 
    更改到 Web 应用程序的 \Bin 目录。 
    用杀毒软件扫描并修改 Global.asax 文件、Web.config 文件或 Web 应用程序的 \Bin 目录下的文件。     
    如果在应用程序的 Web.config 文件的 <processModel> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。 
    *********************************  msdn  *********************************实际上,asp.net的宿主--IIS也有一些设计可以定时或者在某些条件下自动重新启动asp.net。因此,你如果使用session保存经不起丢失的信息(很多信息只是页面之间暂时缓存或者可以在丢失之后从数据库等恢复),就要使用“状态服务器”来保持。“配置状态服务器模式”在上面引述的那段文字下面,写的也很简单清楚。
      

  2.   

    读懂那段文字跟水平没有多大关系,而且那段文字只要打开msdn,找到“按照技术组织的文档结构->创建asp.net应用程序->asp.net状态管理”就能轻易读到,这个目录很直接地引导你学习asp.net应用程序的会话管理知识。msdn写的比较朴实简练,似乎是不太容易像很多“速成”之类的书一样走火入魔。难道你学习asp.net是靠凭摸索,或者单靠从csdn上猎取一些代码?
      

  3.   

    能否具体说说SESSION为什么 不稳定
    我参加过3的个项目一直都在SESSION,有1年多了吧好象还没出现过什么大问题
    COKIEE确实好用如过是做INTRANET的话,但如用语INTERNET项目的话你很难保证每个用户的浏览器都支持
    SESSION+ cookiee 理论上可行但实际中如果SESSION稳定的话我找不出有什么理由去用这个方法
      

  4.   

    启用状态服务器很简单:1。在服务管理器中确保 “asp.net state service”为自动、启动。可能默认为手动、停止。
    2。然后把web.config中的"InProc"改为"StateServer"。
      

  5.   

    理论上,内存少、或者像文档中所说的那些情况,就会丢失进程内session。但是我所遇到的80%所谓session丢失问题,其实是程序员自己经常写程序清除部分session或者混乱使用session这种全局变量造成的。不过必须首先肃清“session不稳定”这种借口。动态修改bin中的程序集、global.asax等文件是经常发生的。当一个客户正在编辑一个页面上的内容的时候,如果程序员重新上传了网站文件,更新了程序,这个客户再提交页面的时候应该不会中断,最多只是感觉到网站有几秒钟停顿,而感觉不到后台系统已经被更新了。.net框架本来就有这种“拷贝更新”的能力,asp.net的session如果是在进程之外,就能保持自身的状态而不丢失。
      

  6.   

    在过去的asp系统中,业务处理通常会利用一些com组件完成。这时候更新系统必须重新启动服务器。asp.net(以及.net框架)还有很多这类伟大的创造,以前的windows系统从来没有过的。
      

  7.   


    TO: sp1234(今天晚上,结束休假了。) 对于你的这段话:”.....但是我所遇到的80%所谓session丢失问题,其实是程序员自己经常写程序清除部分session或者混乱使用session这种全局变量造成的。不过必须首先肃清“session不稳定”这种借口。“ session 的问题,不只是我碰到,你看看下面这个贴子,这可是 5颗红星啊!!!应该是 MVP 吧,不致于连 session 都写不明白吧,程序也不至于写得太烂吧?可是他也碰到这样的问题啊,说明什么呢??http://community.csdn.net/Expert/topic/3561/3561164.xml?temp=.69125-------------------------------------------------------------------
    我以前也认为 session 很好用 ,我的网站也运行了一年了, 用的是万网的 .net 虚拟主机,session 没出现过问题,可就是在前几天,我的网站 session 极不稳定,用户登录上后,有时候甚至登录上后,一点击别的页, session 马上过期,既使不马上过期,也是几分钟内,或是,几十秒内就过期。导至我的网站好几天内没有成功的注册用户,问过万网的工程师,他们也总是敷衍也之,找不到什么用价值的原因。
      

  8.   

    在我的使用中session并没有什么问题,要是出问题我觉得不是session本身的问题。
    session保存在服务器端总比cookies保存在客户端要安全吧
      

  9.   

    还有一个问题:启用状态服务器很简单:1。在服务管理器中确保 “asp.net state service”为自动、启动。可能默认为手动、停止。
    2。然后把web.config中的"InProc"改为"StateServer"。------------------------------------------
    可是我用的是中国万网的虚拟主机,不是自己的服务器,我是改不了人家的服务器设置的,那是不是就用不了这个 状态服务器 了?
      

  10.   

    虚拟主机支持web应用(而不是简单发布信息的网站),如果你想增强程序功能,将来麻烦和扯皮的问题会越多。不知道你的数据库中有多少资料、有没有图片,你的系统有没有复杂报表,等等。能不能使用状态服务器,完全看网管。
      

  11.   

    看来SESSION 也是双刃剑的
      

  12.   

    不管怎么说,以前做 asp 或是 jsp 的时候,也有几年的时间,在 session 这方面是从来没出现过麻烦的, .net 中的 session 做的并不很好,最起码在 .net 1.1 目前的版本中是这样,如果说是程序员本身水平低造成的,似乎不太全理,因为出现这个问题的不在少数,而且有很多绝对是 .net 高手,甚至是
    .net 的 MVP也碰到过类似问题,希望 .net 在以后的版本中能改观 session 的状况,让它更易上手,使用起来更高效,易上手,稳定.....。
    ------------------------
    我希望大家不要说:你 .net 水平低,你不会用 session,你的程序编的差等等才导致至 session 的不稳定,既使真的是这样,那为什么 不把 session 做的象 asp 或是 jsp 或是 php 中的 session 机制那样易用稳定呢,那些 asp 和 jsp 的新手,做的 session 也没有出现过这么多问题啊!我的意思是应该把这些信息反馈给 MS,应该正视问题,才能更好的解决问题,让 .net 走的更远!!