我们的 Web 应用程序(asp.net 4.0)
具有以下结构IIS (7.5 / 8.0)
-MainWebApp (application pool: MainWebApp)
--VirtualWepApp1 (application pool: VirtualWepApp1)
--VirtualWepApp2 (application pool: VirtualWepApp2)
--VirtualWepApp3 (application pool: VirtualWepApp3)
单一登录页面位于MainWebApp
. 与用户相关的数据存储在会话中,并根据用户访问这些虚拟应用程序下的资产(.net 页面)时重新VirtualWepApp1, VirtualWepApp2, VirtualWepApp3
创建HttpContext.Current.Profile.UserName
。MainWebApp/logout
我们面临的问题是,如果用户浏览该页面,他/她没有从系统中完全注销。
我所做的工作是:
- create logout page for every application with Session.Abandon() and System.Web.Security.FormsAuthentication.SignOut()
- the logout link goes to the VirtualWepApp3/logout
- from VirtualWepApp3/logout redirect to VirtualWepApp2/logout
- from VirtualWepApp2/logout redirect to VirtualWepApp1/logout
- from VirtualWepApp1/logout redirect to MainWebApp/logout
其他解决方案是将所有应用程序放在同一个应用程序池下,但是由于其他一些编码困难,这是不行的。
问题:有没有简单的方法从所有应用程序(主要和虚拟)中清除会话/注销用户?
——
附言。我继承了虚拟应用程序的这种结构/架构。