首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net cache是不是可以取代cookies ,求大神指点?

2013-12-19 
asp.net cache是否可以取代cookies ,求大神指点??我发现cache虽然是存在服务器端的,但是 cache确实基于用

asp.net cache是否可以取代cookies ,求大神指点??
我发现cache虽然是存在服务器端的,但是 cache确实基于用户的,那么cache可以取代cookies吗??为什么??例如:登录后,将userid,username存到cache中;
另外我现在在开放微信项目,微信中把客户端的cookies禁用了,我想到了cache;
但是发现一个很严重的问题:cache不是基于用户的吗,为什么,别的用户经常可以获取到另外一个用户的cache呢??
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

你应该说Session是基于cookie的,因为服务器需要辨认当前访问是谁,你可以在cookie中看到有一个ASP.NET_SessionId,如果不用cookie,那你就要通过其它方法来确认当前访问用户到底是谁,而NET本身支持非cookie,方法就是将SessionId直接镶入到url中,但这其实非常蛋疼,他破坏了url的正确性。。。。


你的意思是 如果客户端禁用了cookies,那么session也会失效,是这样吗??因为sessionid也是存在cookie中的
 我是不是理解错了,sessionid是存在服务器端的cookies中么


应该这么说,不管客户端是否禁用cookie,服务端的Session都是在其作用的,但因为客户端禁用了cookie,服务端无法辨认当前访问者是谁,这时候它就会认为是一个全新的访问而重新分配一个sessionid给当前访问者
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

你应该说Session是基于cookie的,因为服务器需要辨认当前访问是谁,你可以在cookie中看到有一个ASP.NET_SessionId,如果不用cookie,那你就要通过其它方法来确认当前访问用户到底是谁,而NET本身支持非cookie,方法就是将SessionId直接镶入到url中,但这其实非常蛋疼,他破坏了url的正确性。。。。


你的意思是 如果客户端禁用了cookies,那么session也会失效,是这样吗??因为sessionid也是存在cookie中的
 我是不是理解错了,sessionid是存在服务器端的cookies中么


应该这么说,不管客户端是否禁用cookie,服务端的Session都是在其作用的,但因为客户端禁用了cookie,服务端无法辨认当前访问者是谁,这时候它就会认为是一个全新的访问而重新分配一个sessionid给当前访问者

_____________________________________________________________________
客户端只负责保存相应网站的SessionID,而其他的Session信息则保存在服务器端。在ASP中,客户端的SessionID实际是以Cookie的形式存储的。如果用户在浏览器的设置中选择了禁用Cookie,那末他也就无法享受Session的便利之处了,甚至造成不能访问某些网站。为了解决以上问题,在ASP.NET中客户端的Session信息存储方式分为:Cookie和Cookieless两种。
  ASP.NET中,默认状态下,在客户端还是使用Cookie存储Session信息的。如果我们想在客户端使用Cookieless的方式存储Session信息的方法如下:
  找到当前Web应用程序的根目录,打开Web.Config文件,找到如下段落:
<sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20" 
/>
  这段话中的cookieless="false"改为:cookieless="true",这样,客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。关闭当前的IE,打开一个新IE,重新访问刚才的Web应用程序,就会看到类似下面的样子:
其中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.中黑体标出的就是客户端的Session ID。注意,这段信息是由IIS自动加上的,不会影响以前正常的连接。


这个就是我在2楼说到得url镶入,至少我认为它非常蛋疼,而且这样会导致一些额外的异常,就以你的http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx为例子,假定我要判断当前页是不是/MyTestApplication/default.aspx,这时候通过Request.Url获取的就是/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx,而不是你期望的/MyTestApplication/default.aspx
[解决办法]
主要是为了解决web无状态

打开两个页面或者刷新一下页面,对于服务器来说就是两个完全无关的事件
服务器需要一个标识来确认,这两个页面来自一个用户。
那么为什么这个标识要存在cookie里呢?
因为cookie 能保存在客户端,而且每个请求都会向服务器发送该站点下所有保存的cookie

热点排行