gpt4 book ai didi

wcf - 在回调方向检查 WCF 消息?

转载 作者:行者123 更新时间:2023-12-04 08:13:20 25 4
gpt4 key购买 nike

我可以分别使用 IClientMessageInspector、IDispatchMessageInspector 在客户端和服务器端检查 WCF 消息。但是在双工通信中,不清楚如何在从服务器到客户端的回调中做到这一点(关于该主题的文档也很少)。

关于如何实现此功能的任何想法?

最佳答案

最后我得到了解决方案。

在进行回调的双工通信场景中,服务器成为客户端,反之亦然。

因此,在服务器端实现 IServiceBehavior 时,使用每个 EndpointDispatcher 的 DispatchRuntime 的 CallbackClientRuntime 属性注入(inject)消息检查器。

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcher item in serviceHostBase.ChannelDispatchers)
{
foreach (EndpointDispatcher epd in item.Endpoints)
{
//injecting an inspector in normal call
epd.DispatchRuntime.MessageInspectors.Add(new MessageSizerInspector());

//injecting an inspector in callback
epd.DispatchRuntime.CallbackClientRuntime.MessageInspectors.Add(new MessageSizerInspector());
}
}
}

在客户端实现 IEndpointBehavior 时,使用 CallbackDispatchRuntime 注入(inject)消息检查器。
public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
{
//injecting an inspector in normal call
clientRuntime.MessageInspectors.Add(new MessageSizerInspector());

//injecting an inspector in callback
clientRuntime.CallbackDispatchRuntime.MessageInspectors.Add(new MessageSizerInspector());
}

然后像往常一样应用扩展。

就我而言,我创建了一个类似于以下伪代码的类
public class MessageSizer : Attribute, IServiceBehavior, IEndpointBehavior
{
.....
}

然后我将此属性应用于服务实现以进行服务器端检查
并在 app.config 中添加了一个 behaviorExtensions 来设置端点以在客户端进行消息检查。
<system.serviceModel>
...........
<client>
<endpoint address="net.tcp://localhost/MinerDual.svc"
binding="netTcpBinding" bindingConfiguration="wsDualMinerNetTcp"
contract="WebApplication.IMinerDual" name="NetTcpMinerDual"
behaviorConfiguration="Default" />
</client>
<behaviors>
<endpointBehaviors >
<behavior name="Default">
<messageSizer/>
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="messageSizer"
type="WCFExtensions.MessageSizerElement, WCFExtensions,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
</system.serviceModel>

关于wcf - 在回调方向检查 WCF 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com