2013-08-03 142 views
0

我一直無法連接到我的Azure的雲服務,一旦我部署它。查看類似問題的答案,我試着檢查我的端點,但似乎配置正確。我試圖通過TCP連接。當我使用Azure計算模擬器時,一切運行良好。無法連接到部署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服務器的方式。還有什麼我應該檢查的東西,或者有關如何進一步調試的提示?任何幫助是極大的讚賞!

回答

2

我懷疑問題是你IPAddress.Loopback的使用和本地端口的選擇。

既然你不爲端點ServiceDefinition配置指定本地端口的Windows Azure可以分配一個隨機端口。然後,您應該使用訪問端點:

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

代碼來自一個馬騰Balliauw post

您可以選擇指定的服務定義文件的本地端口。