我有一个在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的唯一方法是将用户名作为参数传递,这在每个报告中都很难调整。
答案 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 就我而言,确实如此。