Получить имя пользователя Windows в ASP.NET без System.Web
У меня есть отчет dll, который используется в ASP.NET (Windows Authentication) и проектах winforms. Иногда ему нужно имя пользователя, поэтому, если бы он работал в ASP.NET, он использовал бы:
System.Web.HttpContext.Current.User.Identity.Name;
и в окнах
WindowsIdentity.GetCurrent().Name
Сейчас я пытаюсь перейти на.NET 4 Client Profile, поэтому мне нужно избегать ссылки на System.Web в dll для отчетов. Есть ли альтернативный способ получить имя пользователя Windows для, когда DLL работает в ASP.NET, который не будет использовать System.Web. Единственный способ избежать System.Web, который я сейчас вижу, - передать имя пользователя в качестве параметра, который будет непросто настроить в каждом отчете.
5 ответов
Может быть, вы можете использовать свойство CurrentPrincipal класса Thread:
using System.Threading;
string userName = Thread.CurrentPrincipal.Identity.Name;
Вы можете использовать Environment.UserName, который живет в System.
Если проверка подлинности 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