我的应用程序中有一个要求,我认为可以通过使用线程本地存储来满足,但我想知道这是否是最好避免的事情之一。
我已经阅读了一些关于这个主题的文章:
http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=58
http://msdn.microsoft.com/en-us/library/system.threadstaticattribute(vs.80).aspx
我知道如何使用它,我只是想知道我是否应该使用它。
有什么建议,需要注意的地方吗?
[编辑]
这是用例:
我通过一些方法汇集所有数据访问,这些方法对每个查询进行大量记录。我记录的一件事是命令文本的完整转储,其中填充了命令,以便我可以简单地从跟踪日志中直接复制粘贴到 Sql Management Studio 中。
在我的网络应用程序的 global.asax 中,当我遇到未处理的异常时,我会向管理员发送尽可能多的信息的电子邮件。当我收到 SqlException 时,我想将该 sql 命令转储文本放入这封电子邮件中,这将节省我在页面因查询而崩溃时挖掘跟踪日志的时间。
我不想更改我的数据访问类的方法签名,这样我就可以一直向下传递一些引用,只是为了在遇到异常时将其取出。我在想也许 TLS 是放置“lastsqlcommand”之类的好地方,但这看起来不是一个可行的解决方案。