gpt4 book ai didi

.net-3.5 - 客户端连接到 WCF 托管端点时触发事件

转载 作者:行者123 更新时间:2023-12-02 23:31:54 25 4
gpt4 key购买 nike

当新客户端连接到 WCF 托管服务时,我该怎么做才能触发事件?

编辑:我正在寻找的是在创建新 session 或为客户端创建新 channel 时获取事件。例如:对于 session 关闭我正在使用:

OperationContext.Current.Channel.Closed += new EventHandler( Channel_Closed );

那么我应该使用什么来启动 session ?

最佳答案

我认为您想要完成的事情最好通过添加新的 channel initializer 来完成。创建后发送给服务监听器。

基本上,您创建一个实现该接口(interface)的类,然后将其添加到服务主机。如果您是自托管,这非常简单:

public class MyHook : IChannelInitializer
{
public void Initialize(IClientChannel channel)
{
// Do whatever.
}
}

var host = new ServiceHost(typeof(MyService), MYBASEADDRESS);
host.AddServiceEndpoint(typeof(IMyService), new WSHttpBinding(), MYSERVICEADDRESS);
host.Open();

// There will be one per endpoint; you can enumerate them if needed etc.
var dispatcher = host.ChannelDispatchers[0] as ChannelDispatcher;
dispatcher.ChannelInitializers.Add(new MyHook());

由于您使用的是每 session 实例模式,因此在客户端第一次连接时,您将为每个新 session 创建一个新 channel 。 channel 调度程序是负责获取新创建的 channel 并将其与特定服务对象实例关联(进行地址匹配等)的对象。在您的服务连接到新 channel 之前,它将在新 channel 上运行每个自定义初始化程序。

关于.net-3.5 - 客户端连接到 WCF 托管端点时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711611/

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