原觉得ASP.NET State Server原生支持多程序间共享SESSION,觉得在同一服务器上 & 同一根域名下部署的多个应用程序间设置了相同了<sessionState/>和<machineKey/>事情就成了!前端
事实证实是本身TOO YOUNG TOO SIMPLE。根本不WORK!web
BING了一大轮,再找了一下度娘,看到如下较有参考价值的文章:服务器
还有其余几篇微软早期的文章,找不回来了。cookie
综合的结论就是State Server存session数据时,是根据application domain分开放的,即使同一根域名下的每一个程序请求cookie中带的都是同样的session id,因为这些程序各有一个不一样的application id, session的存取其实就分开了。session
搜索下来看,微软并无提供直接的可配置选项,也没有提供公开的接口调用可修改。这个仍是很失望的。app
上述引用的第2、第三篇文章提到的办法,是在程序初始化时利用.net反射机制调用微软一个未公开的接口去修改各个程序的application id, 使之统一。asp.net
我试了一下其中override global.asax.Init()的办法,发现没有用。(iis版本7.5)dom
用vs 2013 设断点debug一下,发现init没有被调用。很是失望。ide
再加上前端时间发现State Server的内存一直缓慢增加,从初始化时的50m,在极少请求的状况下,也会慢慢增加到超过100m,症状是很相似于内存泄露的样子。memcached
OK,算你狠,不肯意再蹚state server浑水了。
计划是换用memcached管理session得了。