ASP.NET在页面外获取Windows用户名

时间:2009-12-02 00:48:14

标签: asp.net

我有一个使用Windows身份验证的现有ASP.NET报告应用程序。很多报告生成代码都在单独的类中,并且有一个我没有编写的核心错误记录器,我认为这个错误记录器是为Windows应用程序构建的,因为它使用的是WindowsIdentity.GetCurrent()。Name。对于ASP.NET,我相信这将返回在服务器上运行ASP.NET页面的帐户。

我认为在页面上使用User.Identity.Name是正确的方法,但只能在页面上的报告生成类中使用它。有没有办法使用错误记录器类获取它而不将其作为额外参数传递。

有数百个报告类,所以我不得不经历并为每个报告添加一个参数。

1 个答案:

答案 0 :(得分:2)

如果您可以在web.config中使用模拟:

....
<authentication mode="Windows"/>
<identity impersonate="true"/>
....

您的报告类将获得合适的用户。

如果您的报告类可以引用System.Web程序集并且您愿意修改代码,那么您也可以这样做:

HttpContext.Current.User.Identity.Name

但请确保调用者来自ASP.NET请求,否则它将抛出nullref。