在消息检查器( IClientMessageInspector
或 IDispatchMessageInspector
)中,只有一个方法接收 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/