У меня есть требование в моем приложении, которое, я думаю, может быть выполнено с помощью локального хранилища потоков, но мне интересно, является ли это одной из тех вещей, которых лучше избегать.
Прочитал несколько статей на эту тему:
http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=58
http://msdn.microsoft.com/en-us/library/system.threadstaticattribute(vs.80).aspx
Я знаю, как им пользоваться, мне просто интересно, следует ли его использовать.
Любые советы, Gotchas, чтобы быть в курсе?
[Изменить]
Вот вариант использования:
Я направляю весь доступ к данным через несколько методов, которые ведут много журналов по каждому запросу. Одна вещь, которую я регистрирую, — это полный дамп текста команды с заполненными командами, чтобы я мог просто копировать и вставлять из своих журналов трассировки непосредственно в Sql Management Studio.
Наверху в global.asax в моих веб-приложениях я отправляю администраторам электронное письмо с максимально возможной информацией, когда получаю необработанное исключение. Я хочу поместить этот текст дампа команды sql в это электронное письмо, когда я получу SqlException, что сэкономит мне время на копание в журналах трассировки, когда страница взрывается из-за запроса.
Я не хочу менять сигнатуры методов моих классов доступа к данным только для того, чтобы я мог передать некоторую ссылку по всему стеку, просто чтобы получить ее, когда я получаю исключение. Я подумал, может быть, TLS будет хорошим местом для размещения чего-то вроде «lastsqlcommand», но это не похоже на жизнеспособное решение.