Самая большая разница в том, что они не должны быть одинаковыми.
Вообще говоря, HttpContext.Current.User
- это пользователь входа в систему (когда он вызывается в рабочем потоке), а Thread.CurrentPrincipal
- это идентификатор рабочего процесса.
В IIS 5.x Thread.CurrentPrincipal
по умолчанию равно ASPNET
. На IIS 6 и выше Thread.CurrentPrincipal
по умолчанию равно Network Service
(или идентификатор пула приложений, на который вы меняете).
Чтобы сделать его сложным, если вы включите олицетворение ASP.NET, то оба они могут совпадать с пользователем входа в систему.
Попробуйте прочитать несколько действительно хороших книг на эту тему и статьи Microsoft MSDN,
http://msdn.microsoft.com/en-us/library/ms998351.aspx
Другим предложением является использование отладчика для подключения к рабочему процессу и проверки его во время выполнения. Это может дать вам лучший вид.
Обратите внимание, что HttpContext.Current.User
не лучший способ запроса
логин пользователя. Вы должны придерживаться Page.User
для веб-форм, и
Controller.User
для MVC и ApiController.User
для веб-API.