Ответ 1
Нет, Скотт прав: запрос определенно не должен работать в одном потоке в течение всего его времени. В этом отношении ASP.NET является проворной. Есть только несколько моментов, когда коммутатор может произойти, но это определенно может случиться. (Я проверял это для себя.)
Вы можете прочитать этот пост в блоге и этот Spring темы форума для более подробной информации.
В принципе, вы должны найти другой способ захвата контекста. Соответствующий бит с вашей точки зрения, вероятно, находится в конце сообщения в блоге:
Это основная PITA, потому что, насколько я вижу, это означает, что единственным вариантом сохранения для ThreadStatic'esque поведения в ASP.Net является использование HttpContext. Таким образом, для ваших бизнес-объектов вы либо застреваете с if (HttpContext.Current!= Null), либо с помощью ссылки System.Web(yuck), или вам нужно придумать какую-то модель поставщика для вашей статической настойчивости, которые будут нуждаться в настройке до того момента, когда любой из этих синглетонов будет доступен. Двойная юка.