0

我使用 BeforeSendRequest() 从我的客户端(实现 IClientMessageInspector)发送一条消息,并在 AfterReceiveReply() 处接收来自端点的回复。

我的问题是“验证”我收到的回复与我发送的请求相关的最有效方法是什么?

我找到了一些关于使用相关状态的文章,但是这些例子都太笼统了。

任何帮助是极大的赞赏。

4

1 回答 1

0

据我所知,我们可以使用Correlationstate参数来保持值以表示相对性。这就是为什么BeofreSendRequest有返回值。

public void AfterReceiveReply(ref Message reply, object correlationState)
{
    Console.WriteLine(correlationState.ToString());
    string displayText = $"the client has received the reply:\n{reply}\n";
    Console.Write(displayText);
}

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
    var correlationstate = Guid.NewGuid().ToString();
    string displayText = $"the client send request message:\n{request}\n";
    Console.WriteLine(displayText);
    return correlationstate;
}

这是一个相关的讨论,希望它对你有用。
https://social.msdn.microsoft.com/Forums/vstudio/en-US/c8de85bf-9ffe-478e-a23c-2514a6504bce/iclientmessageinspector-maintain-id-value-between-the-beforesendrequest-and-afterreceivereply?forum= wcf
如果有什么我可以帮忙的,请随时告诉我。

于 2019-11-07T09:42:31.217 回答