繁体   English   中英

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

[英]Get Windows Username in ASP.NET without System.Web

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

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

并在 windows

WindowsIdentity.GetCurrent().Name

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

也许您可以使用线程class 的CurrentPrincipal属性:

using System.Threading;

string userName = Thread.CurrentPrincipal.Identity.Name;

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

如果 Windows 身份验证启用,这可能有效: Page.User.Identity.Name在我的情况下,它确实有效。

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

使用 System.net -- NetworkCredential.Username?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM