原覺得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得了。