在消息检查器中使用相关状态对象传递通道数据可以吗

本文关键字:对象 通道 数据 状态 检查 消息 | 更新日期: 2023-09-27 18:27:54

在消息检查器(IClientMessageInspectorIDispatchMessageInspector)中,只有一个方法接收IClientChannel参数。我想在另一种方法中获得一些通道数据,所以我创建了一个类用作相关状态对象:

public void AfterReceiveReply(ref Message reply, object correlationState)
{
    var typedCorrelationState = (CorrelationState)correlationState;
    /* ... */
}
public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
{
    var correlationState = new CorrelationState
    {
        SoapCorrelationId = Guid.NewGuid(),
        EndpointAddress = channel.RemoteAddress.Uri.ToString()
    };
    /* ... */
    return correlationState;
}
private class CorrelationState
{
    public Guid SoapCorrelationId { get; set; }
    public string EndpointAddress { get; set; }
}

这样使用相关状态可以吗?或者有更合适的方法来传递这些数据吗?

在消息检查器中使用相关状态对象传递通道数据可以吗

您所做的是完美的。

一个权威的例子:WCF可扩展性–消息检查器。如果你在博客文章中搜索"correlationState",你会发现他以同样的方式传递URI。