每个服务方法调用的WCF唯一ID
我正在使用log4net进行日志记录,我想记录一个id,该id对于每个serice方法调用都是唯一的。我不需要它在服务调用中是唯一的,只需要在方法调用中。是否有任何内置id可以在wcf中使用?我不想在方法调用开始时手动创建guid或其他内容 e、 g 我尝试过OperationContext.Current.IncomingMessageHeaders.MessageId,但它始终为空 我读过关于wcf实例关联的文章,但我不需要那么复杂的东西(例如,在不同的方法调用中是唯一的)每个服务方法调用的WCF唯一ID,wcf,Wcf,我正在使用log4net进行日志记录,我想记录一个id,该id对于每个serice方法调用都是唯一的。我不需要它在服务调用中是唯一的,只需要在方法调用中。是否有任何内置id可以在wcf中使用?我不想在方法调用开始时手动创建guid或其他内容 e、 g 我尝试过OperationContext.Current.IncomingMessageHeaders.MessageId,但它始终为空 我读过关于wcf实例关联的文章,但我不需要那么复杂的东西(例如,在不同的方法调用中是唯一的) 如果有人能帮忙,
如果有人能帮忙,我们将不胜感激。提前感谢。普通SOAP或REST在消息中没有此类标识。您必须使用一些支持消息标识的附加功能或传输协议(例如MSMQ)。在
MessageId
的情况下,您必须使用带有WS-Addressing的SOAP服务,并且必须从客户端传递此信息。在实际方法之外查找/生成此标识符是否重要?否则,我只需要从log
method调用中的方法发送这样一个标识符。
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
}