2012-03-27 63 views
0

我Azure的應用程序主機結合幾個TCP端口多ZeroMQ套接字。 當我在本地開發它時,它工作正常,但上傳到Azure後無法訪問它們。 不幸的是,在添加端口在Azure服務定義後(允許訪問一次上傳到天藍)每次我開始在本地應用程序時,它抱怨正在使用已經的端口。我想它與(調試/本地)負載平衡器鏡像蔚藍行爲有關。 我做錯了什麼或者是這種預期的行爲?如果後者是真的,那麼如何處理這種情況呢?我想我可以爲套接字使用不同的端口,並將它們指定爲端點中的私有端口,但感覺更像是一種解決方法。天青InputEndpoints擋住了我的TCP端口

感謝&問候

回答

2

添加(在你的情況下,TCP)端點與您指定的端口號外部暴露。您可以強制將這些端點映射到特定的端口,或者可以讓它們動態分配,這需要您向角色環境請求分配的內部使用端口。

如果,例如,您創建稱爲輸入端點「ZeroMQ,」你會發現該端口的是這樣使用的端口是否被強行映射,或者你只是讓他們得到動態映射:

var zeromqPort = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["ZeroMQ"].IPEndpoint.Port; 
+0

代碼返回與外部端口輸入相同的端口(在我的情況下爲5555),因此也會導致異常:|。 – Pharao2k 2012-03-27 12:21:38

0

嘗試使用端口,您應該使用環境報告。我認爲在使用模擬器時它們與外部端口不同。端口可以​​從ServiceEnvironment中檢索。

+0

ServiceEnvironment == RoleEnvironment? – Pharao2k 2012-03-27 12:55:40

+0

是的,正是大衛所想的。你有沒有在你的服務配置中設置localPort選項? – 02strich 2012-03-27 19:14:29

0

您是否運行角色的多個實例?在計算模擬器中,不同角色實例的內部端點最終將成爲不同IP地址上的相同端口。如果您試圖在不監聽特定IP地址的情況下打開端口,則最終可能會導致多個實例之間發生衝突。 (例如,他們都試圖打開端口5555,而不是一個開放127.0.0.2:5555和一個開放127.0.0.3:5555。)

+0

我只運行一個實例,所以不應該成爲問題:) – Pharao2k 2012-03-27 18:23:33