我们在 .NetFramework 2 中有一个 ASP.NET 站点(在 IIS 7.5 中有 App Pool 2 Classic),我们使用混合身份验证Basic Authenticate
和Form Authenticate
.
IIS中的配置是:
并在匿名身份验证中有特定用户名为:Guest
。
当用户使用另一个用户名登录时,例如Admin
我们使用模拟:
string Token = GetSpecificTokenOfCurrentUser();
System.Security.Principal.WindowsIdentity WinUser = (WindowsIdentity) HttpContext.Current.Application["User_"+Token];
WinUser.Impersonate();
因此,在我们将网站升级到 .NetFramework 4 并将 .NET 4 中的许多功能添加到网站之前,一切都是完美的,我们认为我们遇到了一个新问题。
问题是用户登录Admin
并同时打开一些页面(3-4),比如在新标签中快速打开,在某些情况下用户没有被冒充。就像第一个页面被正确模拟到Admin
但另一个页面没有被模拟并且仍然有Guest
用户。
这太奇怪了,我们在 Authentication Part 中没有任何变化。变化是我们升级到 .NetFrameWork 4 并且 App Pool 是 .NetFrameWork 4 - Classic。
我们在 .Net 2 版本的网站中进行了测试。一切正常,但我们将 App Pool 更改为 .NetFrameWork 4 并显示问题。
所以问题是 .NetFramework 4 App Pool to Impersonate 发生了什么变化?
有什么我们错过的吗?有什么建议吗?