【问题标题】:WCF Unique ID for each service method call每个服务方法调用的 WCF 唯一 ID
【发布时间】: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


【解决方案1】:

普通 SOAP 或 REST 没有包含在消息中的此类标识。您必须使用一些支持消息标识的附加功能或传输协议(例如 MSMQ)。在MessageId 的情况下,您必须使用带有 WS-Addressing 的 SOAP 服务,并且此信息必须从客户端传递。

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多