0

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

这是我的 .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 上设置服务器的方式. 是否有任何其他我应该检查的东西,或者关于如何进一步调试的提示?任何帮助是极大的赞赏!

4

1 回答 1

2

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

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

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

此代码来自 Maarten Balliauw帖子

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

于 2013-08-03T07:06:58.093 回答