在没有System.Web的ASP.NET中获取Windows用户名

Pet*_*teT 2 asp.net authentication system.web

我有一个在ASP.NET(Windows身份验证)和winforms项目中使用的报告DLL.有时它需要用户名,所以如果它在ASP.NET中运行,它将使用:

System.Web.HttpContext.Current.User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)

并在窗户中

WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试迁移到.NET 4 Client Profile,因此我需要避免报告dll中的System.Web引用.是否有另一种方法可以获取Windows用户名,以便在ASP.NET中运行dll时不使用System.Web.我目前可以看到避免System.Web的唯一方法是将用户名作为参数传递,这在每个报告中都很难调整.

Fré*_*idi 5

也许你可以使用Thread类的CurrentPrincipal属性:

using System.Threading;

string userName = Thread.CurrentPrincipal.Identity.Name;
Run Code Online (Sandbox Code Playgroud)