即时定义出站IP

时间:2018-02-22 12:44:39

标签: c# azure azure-web-sites azure-web-app-service

我正在访问令牌生成器,该令牌生成器根据我的IP(以及我的用户名和密码)生成令牌。由于我的代码在Azure上的App Service上运行,因此它可能会使用the app service中提到的任何出站IP。

我如何理解我一次使用哪种IP?我正在考虑将令牌存储在每个IP的字典中,然后使用它。

还有更好的方法吗?

What I've found:

一个就像下面一样,但首先,我不喜欢每次都能分开打开一个插座。其次,每次通话的IP都一样吗?

using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
{
    socket.Connect("8.8.8.8", 65530);
    IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
    localIP = endPoint.Address.ToString();
}

本地IP 出站IP还是入站IP?我也发现了这个:

public static string GetLocalIPAddress()
{
    var host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (var ip in host.AddressList)
    {
        if (ip.AddressFamily == AddressFamily.InterNetwork)
        {
            return ip.ToString();
        }
    }
    throw new Exception("No network adapters with an IPv4 address in the system!");
}

1 个答案:

答案 0 :(得分:0)

  

我如何理解我一次使用哪种IP?

AFAIK,您无法确定生成令牌时当前使用的IP。

此选项不可配置,选择算法应视为随机。您可以为组合方案中所述的出站指定特定IP地址。

有关详细信息,请阅读此article

您可以修改令牌生成器的规则,了解如何在IP地址上生成令牌库。

尝试将单个IP地址更改为出站IP地址组。因此,无论哪个IP,令牌都可以与所有出站IP地址匹配。