public static IPAddress GetExternalIPAddress()
{
if (externalIPAddress == null || (DateTimeOffset.Now - externalIPAddressTime).TotalHours >= 1)
{
using (var webClient = new WebClient())
{
var ipString = webClient.DownloadString(externalIPServiceUri).Replace("\n", "");
if (IPAddress.TryParse(ipString, out externalIPAddress))
{
externalIPAddressTime = DateTimeOffset.Now;
}
}
}
return externalIPAddress;
}