我有一个 WCF 服务,它记录对数据库的每次调用。稍后,如果发生异常,也会将其记录到单独的数据库中。
我想要一种将这两个日志联系在一起的方法,这样我们就可以看到可能导致异常的原因。为此,我想要某种可以为每次通话获取的唯一 ID。
由于整个事情是在单个线程上执行的,例如,我可以将线程名称设置为 GUID,例如。System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();
但这有点hacky。
在网上搜索,我发现了,System.Threading.Thread.CurrentContext.SetProperty()
但我想知道那个上下文到底是什么。它是否旨在在线程期间存储属性?每个线程是唯一的吗?
如果我有 5 个同时 WCF 调用,我不希望上下文中发生的事情之间存在任何冲突,如果它不是“每次调用”可以这么说的话。
有人可以澄清一下吗?