Спасибо за подсказку. Не знал об этом классе. Однако это может также не сработать по тем же причинам, о которых говорил Джон, я полагаю?

я есть компонент, который нужно хранитьstatic значения для каждого потока. Это общий компонент, который можно использовать во многих сценариях, а не только в ASP.NET.

Я думал использовать[ThreadStatic] атрибут для достижения моей цели. Предположим, что это также будет хорошо работать в сценариях ASP.NET, потому что я предполагал, что каждый запрос вызывается в собственном потоке.

После некоторого исследования я нашелэтот блог от Скотта Хансельмана, говорящего, чтобы быть осторожным при использовании[ThreadStatic] в ASP.NET.

Однако большинство комментариев (ниже Поста) не согласны с тем, что написал Скотт, заявив, что Запрос всегда выполняется в одном потоке и что поток не используется другим запросом в одно и то же время. Это также то, во что я верю, но я бы хотел иметь здесь мнение о вас, экспертов.

Ответы на вопрос(2)

Решение Вопроса

не должны работать в одном потоке в течение всей его продолжительности. ASP.NET - этонить с перестройкой в этом отношении. Есть только несколько точек, где может произойти переключение, но это определенноМожно бывает. (Я проверил это для себя.)

Вы можете прочитатьэтот блог а такжеэто весенняя ветка форума для более подробной информации.

По сути, вы должны найти другой способ захвата контекста. Соответствующий бит с вашей точки зрения, вероятно, находится в конце поста блога:

Это основной PITA, потому что, насколько я понимаю, это означает, что единственная опция сохранения поведения ThreadStatic в ASP.Net - это использование HttpContext. Так что для ваших бизнес-объектов вы либо застряли с if (HttpContext.Current! = Null) и ссылкой System.Web (yuck), либо у вас есть какая-то модель провайдера для статического постоянства, который должен быть настроен до того, как будет получен доступ к любому из этих синглетонов. Двойной гадость

 Mt. Schneiders16 янв. 2017 г., 16:17
Любая идея, если это также верно для запросов WebService (asmx)?
 T.S.01 апр. 2016 г., 05:12
В этом контексте, как ASP.NET работает с принципалом потока? Если я установлю принципал на доступ к сайту вglobal.asax и использовать этот принцип по пути для проверки утверждений и т. д. в контексте, которые может изменить поток, копирует ли Asp.net принципал или культуру потока в этом отношении?
 Jon Skeet16 янв. 2017 г., 16:22
@ Mt.Schneiders: я быожидать это правда, но я не уверен.
 gsharp25 янв. 2011 г., 14:26
Спасибо за дополнительные ссылки. Очень полезно!
 Jon Skeet01 апр. 2016 г., 07:49
@ T.S .: Да, я верю, но я не эксперт ASP.NET, поэтому не знаю деталей.

но .NET 4.0 поставляется сThreadLocal класс.

 gsharp25 янв. 2011 г., 11:17
Спасибо за подсказку. Не знал об этом классе. Однако это может также не сработать по тем же причинам, о которых говорил Джон, я полагаю?

Ваш ответ на вопрос