C# 如何获取托管asp.net应用程序的计算机的主机名、Ip

C# 如何获取托管asp.net应用程序的计算机的主机名、Ip,c#,asp.net,email,smtp,localhost,C#,Asp.net,Email,Smtp,Localhost,如何获取承载应用程序的计算机的本地主机名和Ip。对于开发,部署不同的东西需要localhost。我需要初始化SmtpClient以通过应用程序发送电子邮件 SmtpClient emailClient = new SmtpClient("host","port");//port is optional 我正在寻找一个永久性的解决方案,没有解决方法,也没有对响应、请求进行嗅探,这可能会被欺骗[希望我不是疯了,因为没有人可以欺骗标题中的服务器数据,是吗?]如果您想配置SmtpClient类,您应该

如何获取承载应用程序的计算机的本地主机名和Ip。对于开发,部署不同的东西需要
localhost
。我需要初始化SmtpClient以通过应用程序发送电子邮件

SmtpClient emailClient = new SmtpClient("host","port");//port is optional

我正在寻找一个永久性的解决方案,没有解决方法,也没有对响应、请求进行嗅探,这可能会被欺骗[希望我不是疯了,因为没有人可以欺骗标题中的服务器数据,是吗?]

如果您想配置SmtpClient类,您应该查看web.config的system.net>mailsettings条目:

如果你使用

    IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

它应该返回类似于

IsLocalIpAddress("localhost");        // true (loopback name)
IsLocalIpAddress("127.0.0.1");        // true (loopback IP)
IsLocalIpAddress("MyNotebook");       // true (my computer name)
IsLocalIpAddress("192.168.0.1");      // true (my IP)
IsLocalIpAddress("NonExistingName");  // false (non existing computer name)
IsLocalIpAddress("99.0.0.1");         // false (non existing IP in my net)

这可以简单地修改以返回您需要的地址

@mathieu这对开发和部署系统都有效吗?另外,我现在如何初始化SmtpClient类。如果smtp主机与其他主机不同,您可以为生产使用特定的配置文件development@mathieu我找不到你。以上设置仅适用于本地主机,这就是您的意思?以上设置表示smtp服务器位于主机“localhost”上。如果服务器位于“stmp.mycompany.com”上,则必须相应地编辑配置。如果stmp服务器与应用程序位于同一服务器上,则设置应该可以工作,因为“localhost”表示本地计算机……我只想知道是否有任何方法可以获取承载asp.net应用程序的计算机的IP和主机名。我得到了一个方法,我需要输入每个主机并检查有效的主机???@Deeptechons第一部分将返回所有机器的ip地址,你只需要找出要使用的ip地址之一,因为其中一些是本地地址,而另一些不是
    IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
public static bool IsLocalIpAddress(string host)
{
  try
  { // get host IP addresses
    IPAddress[] hostIPs = Dns.GetHostAddresses(host);
    // get local IP addresses
    IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

    // test if any host IP equals to any local IP or to localhost
    foreach (IPAddress hostIP in hostIPs)
    {
      // is localhost
      if (IPAddress.IsLoopback(hostIP)) return true;
      // is local address
      foreach (IPAddress localIP in localIPs)
      {
        if (hostIP.Equals(localIP)) return true;
      }
    }
  }
  catch { }
  return false;
}
IsLocalIpAddress("localhost");        // true (loopback name)
IsLocalIpAddress("127.0.0.1");        // true (loopback IP)
IsLocalIpAddress("MyNotebook");       // true (my computer name)
IsLocalIpAddress("192.168.0.1");      // true (my IP)
IsLocalIpAddress("NonExistingName");  // false (non existing computer name)
IsLocalIpAddress("99.0.0.1");         // false (non existing IP in my net)