我创建了一个自定义 ServiceHost,我想用它来自动将消息检查器添加到在其上运行的服务的每个端点。我创建了一个实现 IDispatchMessageInspector 和 IClientMessageInspector 的 MessageInspector,并找到了应该将其添加到每个端点的以下代码:
foreach (ChannelDispatcher channel in this.ChannelDispatchers) {
foreach (EndpointDispatcher endpoint in channel.Endpoints) {
endpoint.DispatchRuntime.MessageInspectors.Add(new MyMessageInspector());
}
}
我遇到的问题是 ChannelDispatchers 集合在打开服务主机之前是空的,这意味着我无法在构造函数中运行此代码。我为 Opened 事件创建了一个事件处理程序,并在其中使用了该代码,但是在尝试添加端点时出现以下错误:
This value cannot be changed after a ServiceHost has been opened
似乎我陷入了某种 Catch 22,我在 WCF 中寻求的功能是否可行?
谢谢,
麦克风