在IIS上运行的ASP.NET WebForms应用中,在Session_Start事件中获取当前Windows用户
我有一个旧的ASP.NET WebForms应用,需要进行一些修改。该应用使用Windows验证,因此没有一个标准的登录页。在 session_start 事件的 global.asax 中,我需要获取发起连接的用户的ID。
我调用了:
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
在Visual Studio调试时,这个在调试环境中工作,并返回我的当前ID。然而,我是在IIS Express应用上进行测试。In IIS下运行时,得到的却是应用程序当前运行的应用程序池所对应的用户标识名。
有没有办法获取浏览器发出请求的Windows用户名?
我想在用户“登录”时只获取一次。有没有办法在Session Start时获取发出请求的当前用户,或者我应该处理的其他事件?
解决方案
该方法返回的是正在运行进程线程(应用程序代码)的当前用户,而不是Web应用的客户端用户ID,因此该函数返回的是IIS服务账户。
要根据Windows验证获取实际的客户端用户ID,可以使用:
HttpContext.Current?.User?.Identity?.Name
免责声明:
该方法返回当前用户的名称及其域
DOMAIN/USER_NAME,因此你可以将这些信息分离,只获取用户名
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。