2

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

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

在窗户里

WindowsIdentity.GetCurrent().Name

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

4

5 回答 5

5

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

using System.Threading;

string userName = Thread.CurrentPrincipal.Identity.Name;
于 2011-07-19T14:50:05.670 回答
2

您可以使用位于系统中的 Environment.UserName。

于 2011-07-19T15:16:06.140 回答
0

如果启用 Windows 身份验证,这可能会起作用:Page.User.Identity.Name 在我的情况下,它可以。

于 2013-01-11T12:23:20.033 回答
0

使用 System.net -- NetworkCredential.Username?

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

于 2011-07-19T14:58:27.947 回答
0

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

于 2011-07-19T14:43:37.980 回答