趣谈StateServer在WebGarden,WebFarm下的使用

上一篇翻译的博客【译文】漫谈ASP.NET中的Session已经介绍了Session的基础知识,如果看过了的话对Session应该有了一个比较清晰的认识了,现在我来谈谈我所遇到的困境以及对Session的一些看法。

我们是一家以查询服务为主的网站,然后Leader说,要给查询增加验证码╮( ̄﹏ ̄)╭ ,一开始,我骚包地使用了加减法的验证码(因为已经成为历史,找不到截图了),然后过了两天,客服MM就开始给我们反馈问题了,说接到了大量的客户投诉!嗯,是这样的

趣谈StateServer在WebGarden,WebFarm下的使用

很疑惑啊(= ̄ω ̄=) ,不应该出现问题才对,因为我是用StateServer做了Session的集中式管理,也设置了相同的MachineKey了,按照各种教程来说都应该无缝对接才对啊,嗯~是不是因为我们的验证码的确太难了?20以内的加减法诶~好吧,我改!字母数字组合!这下简单了吧~过了两天,客服MM又来找了,客户说验证码还是输入不对啊!!!!!

趣谈StateServer在WebGarden,WebFarm下的使用

这下奇怪了,我自己去试吧~经过多次尝试!

趣谈StateServer在WebGarden,WebFarm下的使用

这是真的!︽⊙_⊙︽咋办咧?记日志吧~日志上线1分钟,就有N多输错的内容过来了,我看了一下,有的挺匪夷所思的~嘿嘿~趣谈StateServer在WebGarden,WebFarm下的使用
怎么有个奇奇怪怪的东西混进来了?

不过后来分析日志发现,很多识别出现问题,比如1和l,0和o,好吧,该把这些字符去掉~我大哥和我说,为了方便调试,把字母都去了吧~我深表同意!然后我们离真相只有一步之遥了~一看日志,真的有一些相差很大的输入~我基本确定了是Session跨域引发的问题。因为我们是用一个负载均衡设备做的Web Farm,我觉的理论上出现跨服务器的概率不大,因为本地是有DNS缓存的,缓存时间是20多分钟吧,我记得,但是既然出现了这个问题,就说明本地DNS缓存对负载均衡设备是比较无力的,之后进行诊断,只能祭出我大大神器~页面级调试~什么?你没听过?

趣谈StateServer在WebGarden,WebFarm下的使用

对,就是在前端页面加一个这个东西,就能做到了

趣谈StateServer在WebGarden,WebFarm下的使用

用了这玩意儿,什么Cookie,Session ID,Session Value统统跑不出你的把控,然后本地修改HOST,让他在我所控制下在两台服务器之间进行跳转。最后我100%地确定了!两台服务器的Session没有共享!

趣谈StateServer在WebGarden,WebFarm下的使用

怎么样~SB了吧~照着各种资料设置,最后还是失败了!然后就开始了无穷无尽的找资料,然后就翻译出了那篇博客~但是还是没有解决我的问题。昨天下午,终于招到了线索!k325056讲到了这个问题!!

我必须总结后告诉你!两个站点的虚拟路径是要保证一致的!!!!而且是大小写敏感的趣谈StateServer在WebGarden,WebFarm下的使用
对,在我的调试大神器里有这个东西!我为什么要放出两条来呢?因为我必须难过地告诉你:我到现在也不知道怎么改这个虚拟地址!!!!!!!!!!◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣

但是聪明如我,还是发现了INSTANCE_ID和虚拟地址之间的关系了~嘿嘿~ID控制着虚拟地址的最后一位,而我们两台服务器上的网站ID是不同的~地址也就不同了~然后修改以下网站ID(这里有一个天坑!修改了以后我们的网站立马全部崩溃!特么的因为修改了ID以后IIS就把你的站点停止了~~~停止了.....停止了.......你需要手动开启你的站点)然后现在再用调试神器去观察,嘿嘿,生活是美好的~Session是统一的!

总结时间

1、StateServer很好用,很方便,采用集中式管理,支持数据压缩,在web.config里配置就好了,大神的这 篇博客里有 别怕英文,看图就好了~但是!请记住!这玩意儿对应用之间是有数据隔离的!要在web Farm里使用他的话,必须要保证两个站点在两台服务器上的虚拟目录要一致,大小写敏感

2、根据上一条显示,如果是多个应用Session数据共享就会出现问题!所以我感觉,Sate Server模式更适合Web Garden环境使用!多个应用,有不同的Web Site ID的话要使用State Server共享数据是非常困难的!有资料显示可以通过反射来修改他的应用验证机制来实现这个目的。

更多相关文章
  • 20135220谈愈敏Blog5_系统调用下
    系统调用(下) 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 给MenuOS增加time和time-asm命令 上周是从用户态的观点来理解系统调用,这周从内核态出发研究 ...
  • 首先我们要知道remove做的操作是顺序遍历list表,找到第一个匹配的项时删掉该项,并不会再往下找,那我们看下面的代码 1 mylist = [1,2,3] for i in mylist: print i mylist.remove(i) print a 按照我们的思维这是遍历该表输出每一项后删 ...
  • 上图:了解用户的态度和习惯-可用性测试从整体色调上:利用颜色的深浅控制用户的焦距引导用户或是要告诉用户的重点部分用暖色调标出,尽量避免利用颜色凸显过多的元素,这样反而会让用户无所适从.从视觉习惯上:如下图,是一个典型的是用户的视觉习惯的模板:我们会发现看第一张图的时候,我们的视觉会先盯住model, ...
  • 老菜鸟趣谈:对编程初学者的一些建议
    对编程初学者的建议我是程序员,我为程序员代言.现在真的是编程的黄金年代,程序员从来不曾这样供不应求,特别是嵌入式领域.现在哪怕是银行,也需要几个程序员,负责网站的编写,App编写,数据库管理,服务器管理,安全管理,等等.所以学会编程你就有福了,真的不是夸张,我到目前还是菜鸟一个,真的越学习越感到自己 ...
  •       事件与委托似乎很难以理解,这是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步代码,调用一个类型的方法,会即刻出现方法执行的结果,这是符合逻辑的.但在某些情况中,同步代码未必满足需求,拿公共汽车来打个比方,如果交通管制中心希望每一辆公车到达一个站点时都发送给自己一个信号 ...
  • 在使用Extjs制作crud时,由于添加和修改界面的高度相似,使用了相同的row字段. 在角色字段中使用了change监听事件,用于动态的无效化权限分配字段,因为权限分配界面默认没有隐藏,设定了checked:true属性 var row_role = {layout:'column',items: ...
  • 趣谈网站Logo
    网站的命名和logo让我最近着实有兴趣. 有次,在公司里面,不知怎的.大家玩笑的说出这样的话题. A说:曾经有句话,叫做旅游,没几个是人,携程是海豚,艺龙是龙,同程是鱼,途牛是牛,悠哉是老虎,去哪儿是骆驼. B说:京东是狗,天猫是猫,亚马逊是机器人. C说:乐峰是蜜蜂.猪八戒是猪八戒. D说:腾讯是 ...
  • iOS趣谈设计模式——通知
    [前言介绍] iOS的一种设计模式,观察者Observer模式(也叫发布/订阅,即Publich/Subscribe模式). 观察者模式,包含了通知机制(notification)和KVO(Key-value-observing)机制. 在这本文中,我们将介绍在日常项目当中经常使用到的通知机制这一种 ...
一周排行
  • 本人在杭州,欢迎各位来杭州游玩,如果来参加网工"侠客行",一定要在这里留言,食宿免费不敢说,尽地主之宜一定是可以的!      3月28日,阿里巴巴集团在北京宣布,由中国互联网协会和阿里巴巴集团联 ...
  • XtraBackup是Percona旗下一款开源软件,能够对Mysql及MariaDB进行在线备份.其特点如下:备份过程快速.可靠:备份过程不会打断正在执行的事务:能够基于压缩等功能节约磁盘空间和流量:自动实现备份检 ...
  • 用livewriter2011在51cto写博客
    用livewriter 2011 在51cto写博客选择其他服务下一步输入博客地址http ...
  • 时间:丁亥季春初五日:地点:京北城外尘嚣远.人物:无忧创想三军将,目的:绿野探幽百泉山.天气:清风轻舒柳絮飘,              阴翳半日白云漫.事件:苍山鹰石芳菲溢:小桥憩亭清泉蜒.             ...
  • 软件开发过程中,对一个问题有不同意见是很正常的,不同思想的碰撞可以带来进步,但是如果沟通不当,引发争吵,从而延误项目开发进度,就会得不偿失了. 要做到避免争吵,首先得自我反思,自己是不是哪里做得不对,问题没考虑清楚. ...
  • 英国一项调查显示,不少人有网络"财产",越来越多的人把自己的网络密码写在遗嘱中,将"数字遗产"留给亲人.  把网络密码写进遗嘱  知名云计算公司Rackspace对2000名英 ...
  • chinadba.com基于LNMP结构,即Linux.Nginx.MySQL.PHP首先要有台linux的机器,上面需要首先安装GCC.automake.autoconf,另外由于mysql5.5使用了cmake, ...
  • RSS扫盲手册(转载)什么是RSSRSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容)的技术.最初源自浏览器"新闻频道"的技术,现在通常被用于新闻和其他按顺序排列的网站,例如Blo ...
  • 坛子里在讨论入门C++用IDE好还是命令行好,这里谈点我的看法.一家之言,欢迎拍砖.单就学习C++语言而言,建议初学者还是不要用IDE.原因很简单,IDE牵引性太强了. 比如VC吧,上来就建立工程,然后就是一大堆向导 ...
  • 一.线性表的概念:    1.线性表是一种最简单.最常用的数据结构,通常一个线性表是由n(n>=0)个性质相同的数据元素组成的有限序列,长度即为元素的个数n,当n=0时,称该表为空表.    2.非空的线性结构 ...