【发布时间】:2011-08-19 20:45:25
【问题描述】:
我正在使用 log4net 进行日志记录,并且我想记录一个对于每个服务方法调用都是唯一的 id。我不需要它在服务调用中是唯一的,只需要在方法调用中。我可以在 wcf 中使用任何内置 id 吗?我不想在方法调用开始时手动创建 guid 或其他东西。
例如
wcfMethod(int x)
{
log("xxx");
somework
log("yyy");
}
private log(string message)
{
var frame = new StackFrame(1);
var method = frame.GetMethod();
var type = method.DeclaringType;
var name = method.Name;
var log = LogManager.GetLogger(type);
// LOG ID HERE
ThreadContext.Properties["MessageId"] = OperationContext.Current.IncomingMessageHeaders.MessageId; // SOMETHING HERE
}
我已经尝试过 OperationContext.Current.IncomingMessageHeaders.MessageId 但那总是空的。
我已经阅读了有关 wcf 实例相关性的内容,但我不需要那么复杂的东西(例如,在不同的方法调用中是唯一的)。
如果有人可以提供帮助,那将不胜感激。提前致谢。
【问题讨论】:
-
在实际方法之外找到/生成此标识符是否重要?否则我只会从
log方法调用中的方法发送这样的标识符。
标签: wcf