Какая разница между HttpContext.Current.User и Thread.CurrentPrincipal в asp.net?

Ну, я думаю, что заголовок достаточно ясный.

+10
03 дек. '09 в 22:04
источник поделиться
2 ответа

Самое большое различие заключается в том, что они не должны быть одинаковыми.

В общем случае 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

Еще одно предложение - использовать отладчик для присоединения к рабочему процессу и проверить его во время выполнения. Это может дать вам лучший взгляд.

+12
03 дек. '09 в 22:18
источник

Еще одно большое различие заключается в том, что ваш код не всегда имеет доступ к HttpContext. (Например, если у вас есть все ваши BL в сборке, которые могут или не могут быть использованы из веб-приложения). Хотя они могут быть разными, если вы используете Thread.CurrentPrincipal, то ваш код всегда сможет получить в этом объекте пользователя независимо от того, где вы находитесь в своем коде.

+2
04 дек. '09 в 14:32
источник

Посмотрите другие вопросы по меткам или Задайте вопрос