c# - Service Fabric - 远程监听器和通信监听器不同时工作

标签 c# azure-service-fabric

我是 Service Fabric 的新手,在我的练习中,我做了一个可靠的无状态服务,在 RunAsync 中,它增加了他的属性“计数器”。我验证了我可以通过接口(interface) IService 公开一个返回此计数器值的方法(通过 ServiceProxy 从客户端调用的方法),显然会覆盖 CreateServiceInstanceListeners 并添加 CreateServiceRemotingListener。 然后我尝试添加另一个自定义通信监听器 SS1ServiceEndpoint(监听指定端口 7080):

<Endpoint Name="RemoteListener" />
<Endpoint Name="SS1ServiceEndpoint" Protocol="http" Port="7080" Type="Input" />

但服务最初抛出

Exception thrown: 'System.ArgumentException' in Microsoft.ServiceFabric.FabricTransport.dll

然后越来越多地调用自定义监听器的 OpenAsync 方法,每次调用后都会抛出另一个异常:

Exception thrown: 'System.ObjectDisposedException' in mscorlib.dll
Exception thrown: 'System.AggregateException' in mscorlib.dll
Exception thrown: 'System.Fabric.FabricElementAlreadyExistsException' in 
System.Fabric.dll
Exception thrown: 'System.ArgumentException' in 
Microsoft.ServiceFabric.FabricTransport.dll

如果我在 CreateServiceInstanceListeners 中删除 CreateServiceRemotingListener,该服务就会启动,我可以从浏览器的监听端口上调用它。

我的问题是:是否不支持多个监听器?我没有尝试使用两个自定义监听器(在不同的端口上)。

最佳答案

支持多个监听器,但您必须为监听器提供一个名称,否则该名称是可选的。尝试在 CreateServiceInstanceListeners 中为您的监听器添加一个名称。

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    return new[]
    {
        new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context), "RemotingListener"),
        new ServiceInstanceListener(context => new CustomListener(), "CustomListenerName")
    };
}

关于c# - Service Fabric - 远程监听器和通信监听器不同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068020/

相关文章:

azure - 与云服务辅助角色相比,使用 Service Fabric 无状态服务有哪些优势?

c# - 使用 Linq 的 foreach 循环条件

c# - 列表<T>的属性

c# - Web 服务和 nunit 测试

javascript - javascript 中的 Math.round MidPointRounding.AwayFromZero

azure-service-fabric - 如何在 StatefulActor 中实现 "write-behind"

c# - 为什么 'Lambda' 在我的 LINQ to Entities 语法中不受支持

azure - 为开发生命周期配置 Azure ServiceFabric - 如何参数化主机名?

powershell - 使用本地加载的组件部署 Service Fabric 集群,而不是安装所需的组件

azure-service-fabric - Windows 上使用 Java 的 Service Fabric