在消息检查器中使用相关状态对象传递通道数据可以吗
本文关键字:对象 通道 数据 状态 检查 消息 | 更新日期: 2023-09-27 18:27:54
在消息检查器(IClientMessageInspector
或IDispatchMessageInspector
)中,只有一个方法接收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。