我有一个奇怪的问题与Windows身份验证。我们有一个asp.net webforms应用程序,其中我们有一个使用Windows身份验证的文件夹。此文件夹已针对IIS中的Windows身份验证正确配置。该应用程序通过web.config使用.net模拟。当我们使用Windows身份验证的浏览到一个页面此文件夹中:当前windowsidentity与当前的请求用户身份一样windows身份验证
- system.web.httpcontext.current.user.Identity.Name返回做请求的用户名(这是预期)
- System.security.principal.windowsIdentifier.getCurrent.Name返回,我们一直在我们的产品的新版本,请在运行应用程序(这也是预期)用户
现在的名字长时间。我们现在发现行为已经改变。当我们再次执行相同的测试时,httpcontext用户名和principal.windowsidentity.getcurrent都会返回执行请求的用户的名称。
我们已经检查了所有相关的代码,我们似乎无法找到与此行为有关的任何差异。我们在新版本中将应用程序从.Net 4.0转换为.Net 4.5.2,但是,当我们将旧版本转换为.Net 4.5.2时,行为保持正确(这两个属性显示不同的标识)似乎没有区别。
想到哪里寻找这种行为的原因?
编辑: 调试告诉我,执行global.asax prerequesthandler时,身份已经有错误的值。在开始请求时,网站的模仿尚未执行,且当前标识是应用程序池标识
编辑2: 它似乎是服务器特定的。出于某种原因,旧版本在开发机器上正常工作,但新版本不支持。但是,新版本确实在部署服务器(我们的日常构建)上正常工作。任何人有任何关于可能的原因的指针?