2012-03-27 37 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