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

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

10
04 дек. '09 в 1: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
04 дек. '09 в 1:18
источник

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

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

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