wcf - 将相关 token 传递给 WCF 服务?

标签 wcf logging correlation

有很多类似的调用,也许是并行的,对一些 Web 服务,我想知道实现关联 token 机制的最佳方法是什么。

这个想法是让从客户端到服务器,能够使用标识符记录单个请求的信息,该标识符有助于稍后获取特定请求的日志。

我想避免在每个操作上添加一个参数,因为我认为这是管道,而不是业务。

PS:我在我的解决方案中同时控制客户端和服务器端。我可以改变任何需要的东西。我的服务使用 .Net V4 运行,我使用 log4net 创建日志。我已经包装了 log4net 是一些实用方法,如果需要,我可以更改。

最佳答案

那么您是否只想要有关请求及其响应的信息?如果您使用带有 WS-Addressing 的消息版本您应该自动拥有它,因为每条消息都将包含其自动生成的 ID (guid),并且每个响应也将包含请求的 ID。您可以通过 OperationContext 访问这些标题。 :

服务器端:

UniqueId id = OperationContext.Current.IncomingMessageHeaders.MessageId;

客户端:
using (var scope = new OperationContextScope())
{
    // Do call to server and after that access headers

    OperationContext context = OperationContext.Current;
    UniqueId responseId = context.IncomingMessageHeaders.MessageId;
    UniqueId requestId = context.IncomingMessageHeaders.RelatesTo;
}

要使用 WS-Addressing,您必须使用带有 WsHttpBinding 的 SOAP 服务。或 CustomBinding使用正确 MessageVersionTextMessageEncodingBindingElement .

如果您想关联来自同一客户端的所有请求,您需要 WCF session 并使用 session ID ( OperationContext.Current.SessionId )。

关于wcf - 将相关 token 传递给 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552878/

相关文章:

powershell - 如何使用 foreach-object 并行将日志写入单个文件?

r - 与ggplot2相关的矩阵图

r - 使用 R 中的匹配子类计算两个国家之间的相关性

xml - 根据 XML 请求更改 WCF 命名空间

c# - WCF - 发送请求的能力,其中字段可以按任何顺序排列

java - 使用 Spring AOP 记录方法条目

apache-flex - 你做客户端日志吗?

php - MySQL 表关联

java - 通过 WCF 客户端调用 Java SOAP 1.1 服务

silverlight - 在 SSL 中部署 WCF 服务和 silverlight