簡體   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