c# - 是否可以使用相关状态对象在消息检查器中传递 channel 数据?

标签 c# wcf

在消息检查器(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/

相关文章:

c# - 我必须在 Windows 服务中实现 Stop 方法吗?

c# - WCF Web 服务调用 - 要捕获哪些异常?

c# - WPF中的字符串计算器,在ViewModel中填充文本框

c# - 2个WCF服务,1个通用接口(interface),多头头疼

c# - 如何使用C#多选对话框中的特定文件?

c# - 仅更改 RichTextBox 字体系列而不更改 FontSize

c# - 使用 DataContract 类的 BinaryFormatter 有问题吗?

c# - 在 Visual Studio 中使用 Windows 身份验证服务进行客户端开发

WCF 和 127.0.0.1 与本地主机

.net - Entity Framework 4 通过 WCF 进行 LINQ to Entities 查询