Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个kestrel无状态服务实例在服务结构的不同端口上运行_C#_Azure_Microservices_Azure Service Fabric_Service Fabric Stateless - Fatal编程技术网

C# 多个kestrel无状态服务实例在服务结构的不同端口上运行

C# 多个kestrel无状态服务实例在服务结构的不同端口上运行,c#,azure,microservices,azure-service-fabric,service-fabric-stateless,C#,Azure,Microservices,Azure Service Fabric,Service Fabric Stateless,我已经在Visual Studio 2019中使用示例默认值创建了一个无状态服务(创建新项目->服务结构应用程序->命名项目和解决方案->无状态ASP.NET核心服务) 运行weather forecast应用程序而不做任何更改工作正常,我可以在Service Fabric explorer中看到该应用程序正在运行,并可以看到我的5个健康(本地开发)节点和1个绿色应用程序 如果我修改Local.5Node.xml将InstanceCount从1更改为-1 <?xml version="1.

我已经在Visual Studio 2019中使用示例默认值创建了一个无状态服务(创建新项目->服务结构应用程序->命名项目和解决方案->无状态ASP.NET核心服务)

运行weather forecast应用程序而不做任何更改工作正常,我可以在Service Fabric explorer中看到该应用程序正在运行,并可以看到我的5个健康(本地开发)节点和1个绿色应用程序

如果我修改
Local.5Node.xml
将InstanceCount从1更改为-1

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SampleApp" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="SampleApp_ASPNETCORE_ENVIRONMENT" Value="Development" />
    <Parameter Name="SampleApp_InstanceCount" Value="-1" />
  </Parameters>
</Application>

在我在VS2019中运行的应用程序中,诊断窗口显示持续无法启动的进程:

进一步检查后,我发现新实例正试图在同一端口上旋转


端口分配在具有多个无状态web服务实例的Service Fabric中如何工作?是否需要具有反向代理的网关来发现每个实例?在没有自定义解决方案的service Fabric中是否可以自动缩放无状态web服务?

Kestrel不支持端口共享,因此一旦一个服务声明该端口,在同一台机器上运行的其他服务(此处:您的开发机器)就不能

最简单的解决方法是在dev集群上运行时创建服务的1实例。解决此问题的另一种方法是在本地使用(随机)SF分配的端口:

完全省略
ServiceManifest.xml
中的端点配置,然后 不要将端点名称传递给
KestrelCommunicationListener
建造师

接下来,使用(例如)反向代理与您的服务进行通信


更多信息

Kestrel不支持端口共享,因此一旦一个服务声明该端口,在同一台机器上运行的其他服务(此处:您的开发机器)就无法共享

最简单的解决方法是在dev集群上运行时创建服务的1实例。解决此问题的另一种方法是在本地使用(随机)SF分配的端口:

完全省略
ServiceManifest.xml
中的端点配置,然后 不要将端点名称传递给
KestrelCommunicationListener
建造师

接下来,使用(例如)反向代理与您的服务进行通信

更多信息