我有一个WCF服务,并且它会记录每次调用到数据库中。如果发生异常,它也会被记录到另一个数据库中。
我想要一种方法将这两个日志联系起来,以便我们可以查看可能导致异常的原因。为此,我想要获得每个调用的某种唯一标识符。
由于整个过程都在单线程上执行,例如,我可以将线程名称设置为GUID,如
在网络上搜索时,我发现了
如果我有5个同时进行的WCF调用,如果它不是“按调用”而是“按线程”,我不希望在上下文中发生任何冲突。
能否有人澄清一下?
我想要一种方法将这两个日志联系起来,以便我们可以查看可能导致异常的原因。为此,我想要获得每个调用的某种唯一标识符。
由于整个过程都在单线程上执行,例如,我可以将线程名称设置为GUID,如
System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();
但这有点不专业。在网络上搜索时,我发现了
System.Threading.Thread.CurrentContext.SetProperty()
,但我想知道这个上下文到底是什么。它是否设计用于存储线程持续时间的属性?是否对于每个线程都是唯一的?如果我有5个同时进行的WCF调用,如果它不是“按调用”而是“按线程”,我不希望在上下文中发生任何冲突。
能否有人澄清一下?
ThreadLocal
切换到AsyncLocal
,这允许您的存储在异步/等待边界上流动,其中您可能会跳转线程。 - Scott Chamberlain