<

Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x

Resolving Remote Windows Azure IP Addresses

Published on
10,236 Points
4,136 Views
1 Endorsement
Last Modified:
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct answer immediately. Good old IPAddress(). <-- Not really.  =/   Why not?  

The crux of the issue is this: IPAddress in the .NET Framework v4.x has no way to resolve a host name back to a valid IP address. You have to use the DNS class instead.

Here's the problem:
Whenever I ran the following code it always threw the following exception:
var targetHostAddress = "http://myStagingSubDomain.cloudapp.net";
var ipAddresses = Dns.GetHostAddresses(targetHostAddress); <-- exception was being thrown here...
var ipAddress = ipAddresses[0];

using (var client = new TcpClient())
{
    client.Connect(ipAddress, port);
    Console.WriteLine("{0}Connected to {1}:{2}.", Environment.NewLine, ipAddress.ToString(), port.ToString());
}

Open in new window

The Exception:
No such host is known --> System.Net.Sockets.SocketError.HostNotFound

Great. Then I realized that it just might be because I was including the address as presented in the browser... so what if I shaved off the protocal and trailing slash? Eureka! That worked!

All's good then, right? Nope. You have to do just a little more juggling to accomodate the possible peculiarities in your network/subdomain/whatever. How do I know this? Because when substituted "localhost" or "127.0.0.1" for the address I still got the exception : "No connection could be made because the target machine actively refused it 127.0.0.1:4201"

Ok, Here's The Scenario:
1. We are deploying a service with multiple TCP/IP listeners to Windows Azure.
2. One of those listeners is the target.
3. We know Windows Azure IP addresses are subject to change without warning.
4. We also know that eventually that switching could be "on purpose", or rather the result of load balancing and not security/maintenance.
5. We need to find the IP address automatically and without human interaction.
6. We need to be able to test the solution locally, then deploy it to the cloud without changing anything but the targetHostAddress.
var targetHostAddress = "localhost"; // "{substitute_your_windows_azure_host_name_instead_here--don't_include_the_protocol_or_trailing_slash}";
var ipAddresses = Dns.GetHostAddresses(targetHostAddress);
var ipAddress = !targetHostAddress.Contains("localhost") ? ipAddresses[0] : ipAddresses[1];

Open in new window

... notice the host name test in the 3rd line? That's important (at least in my office anyway...), because ipAddress[0] was actually "::1", NOT "127.0.0.1" like I expected. For the life of me I couldn't figure out why I kept getting that exception until I added a few more breakpoints. Never assume that would should be is... trust, but verify.

I hope this saves you some valuable time. I know it would've saved me at least an hour between deployments and testing.  =/
1
Comment
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
0 Comments

Featured Post

Fill in the form and get your FREE NFR key NOW!

Veeam® is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

Join & Write a Comment

In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Is your data getting by on basic protection measures? In today’s climate of debilitating malware and ransomware—like WannaCry—that may not be enough. You need to establish more than basics, like a recovery plan that protects both data and endpoints.…

Keep in touch with Experts Exchange

Tech news and trends delivered to your inbox every month