Получить имя пользователя 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

Другие вопросы по тегам