应用服务结构无法启动

时间:2017-05-03 18:58:15

标签: azure azure-service-fabric

我一直收到与冲突端口相关的错误。当我在Program.cs中的包含

的行中设置断点时
ServiceRuntime.RegisterServiceAsync

它实际上在服务结构项目中每个服务停止一次,这显然是为什么它试图不止一次绑定到同一个端口!为什么突然这样做?!

HttpListenerException: Failed to listen on prefix 'https://+:446/' because it conflicts with an existing registration on the machine.

3 个答案:

答案 0 :(得分:0)

问题是httplistener正在尝试绑定到已在使用的端口。导致此问题的原因可能是以下之一。

  • 另一个进程已经在使用该端口。请尝试netstat -ano找出使用该端口的进程,然后tasklist /fi "pid eq <pid of process>"查找进程名称。
  • 也许您将开发群集作为多节点实例启动。这样一台机器上的几个节点就试图访问同一个端口。
  • 也许你有一个前端和一个api,你想在同一个端口上运行,然后你必须使用http.sys的基于路径的绑定功能(如果你使用的是WebListener)

如果此操作失败,请您发布ServiceManifest.xml的片段。 应该有一行定义您的端点<Endpoint Protocol="https" Type="Input" Port="446" />

答案 1 :(得分:0)

在您的应用程序清单中,您可以定义所需服务的实例数,人们常常犯的错误是将此数字设置为大于1,并且它将失败,因为您的本地群集显示5个节点,但它们都是在同一台机器上运行,机器端口仅在启动的第一个实例中使用。

将实例数设置为1,您不会在program.cs的主要入口点看到多个入口。

使其可以从ApplicationParameters进行配置,因此您可以根据环境定义这些数字。

答案 2 :(得分:0)

您说您不必之前设置实例数,这可能是因为您可以选择使用“发布”配置文件,该配置文件可能与“云”与“本地”部署不同。该配置文件将指向相应的“应用程序参数”文件,您可以在其中将本地部署的实例计数设置为1。

您的发布个人资料可能发生了什么事?

enter image description here

ApplicationParameters / Local.1Node.xml:

ApplicationParameters/Local.1Node.xml