我在visual studio中创建了一个worker角色并将其部署到Azure。 Azure显示它正在我的暂存中运行。
在我的云服务屏幕上有一个服务的URL,但是当我ping它或只是在那里导航时似乎没有做任何事情。我明白了:
此网页不可用
ERR_NAME_NOT_RESOLVED
我编写了以下代码来尝试通过TcpClient访问服务:
string ip = "http://mysite.cloudapp.net";
int port = 10;
TcpClient client = new TcpClient();
try
{
client.Connect(ip, port); // This line throws the error.
if (client.Connected)
{
client.Close();
}
}
catch (Exception ex)
{
Trace.Warn(ex.Message);
}
在client.Connect(ip,port)上有一个错误 消息=“请求的名称有效,但未找到所请求类型的数据”
我的WorkerRole具有以下Run方法(从我相信的在线教程中复制)。
public override void Run()
{
Trace.TraceInformation("wr is running");
TcpListener listener = null;
try
{
listener = new TcpListener(
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["myEndpoint"].IPEndpoint);
listener.ExclusiveAddressUse = false;
listener.Start();
}
catch (SocketException)
{
Trace.Write("Echo server could not start.", "Error");
return;
}
while (true)
{
IAsyncResult result = listener.BeginAcceptTcpClient(HandleAsyncConnection, listener);
connectionWaitHandle.WaitOne();
}
}
最后在我的csdef中,我的端点如下所示:
<InputEndpoint name="myEndpoint" protocol="tcp" port="10" localPort="10" />
我想让连接来回说话。
答案 0 :(得分:0)
您是否尝试从“ip”变量的值中删除“http:”?您希望IP地址指向,但不绑定到HTTP协议。
答案 1 :(得分:0)
我以为我可以使用网址,但显然是使用我的服务页面上的azure门户网站上列出的ipaddress,在输入端点(显而易见)之下。我做了以下事情:
IPAddress ipAddress = IPAddress.Parse("13.71.112.31");
int port = 10;
TcpClient client = new TcpClient();
try
{
client.Connect(ipAddress, port);
if (client.Connected) // now true
{
我使用此tutorial作为参考。