在消息检查器( IClientMessageInspectorIDispatchMessageInspector )中,只有一个方法接收 IClientChannel 参数。我想在另一种方法中提供一些 channel 数据,因此我创建了一个类用作相关状态对象:

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 Extensibility – Message Inspectors 。如果您在博客文章中搜索“correlationState”,您会看到他以相同的方式传递 URI。

关于c# - 是否可以使用关联状态对象在消息检查器中传递 channel 数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34451231/

10-13 01:21