无法连接到已部署的Azure云服务

时间:2013-08-03 06:41:07

标签: azure tcp

部署后,我无法连接到我的Azure云服务。看看类似问题的答案,我已经尝试检查我的端点,但它们似乎配置正确。我正在尝试通过TCP连接。当我使用Azure计算模拟器时,一切都在本地运行良好。

这是我的.csdef文件:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Server"     xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"     schemaVersion="2013-03.2.0">
  <WorkerRole name="WorkerRole" vmsize="Small">
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="tcp" port="4029"/>
    </Endpoints>
    <LocalResources>
      <LocalStorage name="DiagnosticStore" sizeInMB="20000" cleanOnRoleRecycle="false" />
    </LocalResources>
  </WorkerRole>
</ServiceDefinition>

在我的服务器实例上,这是一个Azure辅助角色,我有以下TCP侦听器:

const int port = 4029;
IPAddress addr = IPAddress.Loopback;
try
{
    var listener = new TcpListener(addr, port);
    listener.Start();
    ...
}

最后,在我的客户端,我有以下内容:

var hostName = new HostName("[IP Address as shown in the Azure Management Portal]");
TcpSocket = new StreamSocket();

try
{
     await TcpSocket.ConnectAsync(hostName, "4029");
     ...
}

此代码工作正常,当我的服务器在Azure模拟器中本地运行时,我能够将我的客户端连接到我的服务器,所以我倾向于认为问题在于我设置我的方式Azure上的服务器。是否还有其他我需要检查的内容,或者有关如何进一步调试的提示?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

我怀疑问题是您使用IPAddress.Loopback和本地端口的选择。

由于您未在端点的ServiceDefinition配置中指定本地端口,因此Windows Azure可以分配随机端口。然后,您应该使用以下方式访问端点:

listener = new TcpListener( 
    RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint); 
listener.ExclusiveAddressUse = false; 
listener.Start(); 

此代码来自Maarten Balliauw post

您可以选择在服务定义文件中指定本地端口。