无法在 CreateServiceInstanceListeners 中使用多个 ServiceInstanceListener 对象

Unable to use multiple ServiceInstanceListener objects in CreateServiceInstanceListeners

我已经创建了一个 Service Fabric 应用程序和 StatelessService.CreateServiceInstanceListeners returns multiple ServiceInstanceListener 对象。服务侦听器已打开,但几乎立即中止。然后它再次打开侦听器(不经过 CreateServiceInstanceListeners,中止它们,...

当我只使用一个服务监听器时,一切正常。

返回的服务实例侦听器被添加到 ServiceListenerInstanceCollection ([code][1]),如果集合中已经存在同名的服务侦听器实例,则此操作失败。

ServiceInstanceListener 构造函数具有以下实现:

public ServiceInstanceListener(
   Func<StatelessServiceContext, ICommunicationListener> createCommunicationListener,
   string name = "")
{
  this.CreateCommunicationListener = createCommunicationListener;
  this.Name = name;
}

默认名称为空字符串,因此如果您不指定名称,则返回的枚举包含多个名为“”的侦听器,这会引发异常。默认实现中止已经打开的侦听器并重新启动它们。

解决方法很简单。创建 ServiceInstanceListener.

时只需指定一个(唯一的)名称