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

时间:2011-07-19 14:37:24

标签: asp.net authentication system.web

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

System.Web.HttpContext.Current.User.Identity.Name;

并在Windows中

WindowsIdentity.GetCurrent().Name

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

5 个答案:

答案 0 :(得分:5)

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

using System.Threading;

string userName = Thread.CurrentPrincipal.Identity.Name;

答案 1 :(得分:2)

您可以使用System.

中的Environment.UserName

答案 2 :(得分:0)

System.Web命名空间绝对可以在ASP.Net应用程序中使用。你绝对可以利用它。除此之外,您还将拥有可用于验证或告知当前用户名的成员资格提供程序。

答案 3 :(得分:0)

使用System.net - NetworkCredential.Username?

价: http://msdn.microsoft.com/en-us/library/system.net.networkcredential.username.aspx

答案 4 :(得分:0)

如果启用了Windows身份验证,则可能有效: Page.User.Identity.Name 就我而言,确实如此。