在IIS上运行的ASP.NET WebForms应用中,在Session_Start事件中获取当前Windows用户

前端开发 2026-07-12

我有一个旧的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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章