Ответ 1
Правильно ли это предположение?
Нет, это предположение неверно и там доказательства для этого. Единственный надежный механизм хранения запросов в ASP.NET - HttpContext.Items
.
Никогда не используйте поля [ThreadStatic]
для хранения значений для каждого запроса в приложении ASP.NET. Например, если у вас есть асинхронный контроллер, вы можете очень хорошо заставить двигатель сделать один запрос из пула потоков, чтобы начать обслуживать запрос, а затем инициировать асинхронную операцию, основанную на IOCP (порт завершения ввода-вывода) и, наконец, нарисовать другой поток из пул, чтобы завершить запрос. Таким образом, у вас может быть 2 разных потока, обслуживающих один и тот же HTTP-запрос.
Абсолютно никогда не полагайтесь на то, что HTTP-запрос будет обслуживаться одним и тем же потоком.
Это может быть правдой в некоторых случаях для синхронных запросов, но помните, что это всего лишь деталь реализации. Это может измениться без какого-либо уведомления с одной версии .NET на другую. Вы никогда не должны полагаться на него и никогда не использовать [ThreadStatic]
в ASP.NET. Это может сильно укусить вас.