2012-06-07 32 views
1

我有一個內部端點如下設置:內部端口碰撞在Azure計算模擬器

<InternalEndpoint name="TcpSvcEndpoint" protocol="tcp" port="20000" /> 

端點將通過NetTcp WCF服務一起使用。如果我在計算模擬器中運行1個實例,配置工作正常。但在計算模擬器(Visual Studio調試Azure項目)中有2個或更多實例時,同一個端口將分配給所有實例。這當然會失敗WCF NetTcp初始化所有服務(除了第一個實例),預期異常「IP端點上已經有一個偵聽器。確保..... SocketException:每個套接字只有一個用法... ......「。

我的理解是模擬器會增加每個實例的端口。如果不是這種情況,在Visual Studio中調試時如何在計算模擬器上測試多個實例?

我不想用「*」使用動態端口設置。

爲了澄清,我正在訪問RoleEnvironment以獲取分配的端口。

RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["TcpSvcEndpoint"].IPEndpoint.Port; 

我正在使用Azure SDK 1.6。 (2011年11月版)。

+0

你能澄清一下,你是否簡單地使用端口20000與你的wcf初始化,或者調用'RoleEnvironment.CurrentInstance.InstanceEndpoints [「TcpSvcEndpoint」]。IPEndpoint.Port'? –

+0

我在調用RoleEnvironment.CurrentInstance.InstanceEndpoint [...] ... Port。我沒有硬編碼任何端口。端口號來自計算模擬器的RoleEnvironment實例。 – loopedcode

回答

1

對於Windows Azure SDK 1.5及更高版本,多個實例具有不同的IP地址,但與我在this blog中描述的EndPoint設置中定義的端口相同。

他們它的工作方式是,如果你定義的端口10000 TCP端點2實例,然後你會得到如下實例IP地址:

  • 實例#1 - 127.255.0.1:10000
  • 實例#2 - 127.255.0.2:10000

所以,如果你一定要考一個服務的所有實例在計算模擬器。您需要將IP地址和端口組合起來測試應用程序。