Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个服务方法调用的WCF唯一ID_Wcf - Fatal编程技术网

每个服务方法调用的WCF唯一ID

每个服务方法调用的WCF唯一ID,wcf,Wcf,我正在使用log4net进行日志记录,我想记录一个id,该id对于每个serice方法调用都是唯一的。我不需要它在服务调用中是唯一的,只需要在方法调用中。是否有任何内置id可以在wcf中使用?我不想在方法调用开始时手动创建guid或其他内容 e、 g 我尝试过OperationContext.Current.IncomingMessageHeaders.MessageId,但它始终为空 我读过关于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
}