2017-05-03 48 views
0

我不斷收到與衝突端口相關的錯誤。當我在含應用程序服務結構未啓動

ServiceRuntime.RegisterServiceAsync 

管線設備內部的Program.cs斷點它實際上是在服務織物項目,這顯然是停在那裏更多的則每服一次,爲什麼它試圖綁定到同一端口不止一次!爲什麼突然這樣做?!

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

您是否在ServiceManifest中指定了端點的端口號?每個服務有多少個端點?你能告訴我們你創建監聽器的代碼嗎? – Marusyk

回答

0

問題是,httplistener試圖綁定到已經在使用的端口。這個問題的原因可以是下列之一。

  • 另一個進程已經在使用該端口。嘗試netstat -ano以找出正在使用端口的進程,然後找到tasklist /fi "pid eq <pid of process>"來查找進程名稱。
  • 也許您正在開發您的開發羣集作爲多節點實例。這樣一臺機器上的幾個節點正試圖訪問相同的端口。
  • 也許你要在同一端口上運行一個前端和API,那麼你必須使用HTTP.SYS的基於路徑的結合能力(如果你使用的是WebListener)

如果這個失敗可以請你發帖ServiceManifest.xml的片段。 應該有一條線定義您的端點<Endpoint Protocol="https" Type="Input" Port="446" />

+0

將它設置爲1節點集羣可以工作,但我從來沒有這樣做過?我已經與這個SF項目合作了幾個月了! – iwayneo

0

在您的應用程序清單,你定義你希望你的服務的許多情況下,常見的錯誤的人做的是如何將這個數字設置爲大於1,並且它會失敗,因爲您的本地羣集顯示5個節點,但它們都在同一臺機器上運行,並且機器端口僅在第一次啓動時使用。

將實例數設置爲1,並且您不會在program.cs的主入口點上看到多個入口。

使其可從ApplicationParameters進行配置,因此您可以在每個環境中定義這些編號。

+0

這確實有效,但真正奇怪的是它曾經與5一起工作,事實上在我的同事機器上它仍然有效! – iwayneo

+0

檢查他的機器是否使用相同的配置版本,檢查服務架構中該服務正在運行多少個實例。使用此命令「netstat.exe -a -n -o」檢查是否有其他服務正在使用相同的端口。 另外,請注意instanceCount -1與1不同 –

相關問題