如何获取托管asp.net应用程序的机器的HostName,IP

时间:2011-06-09 08:15:22

标签: c# asp.net email smtp localhost

如何获取托管应用程序的计算机的LocalhostName,Ip。对于开发,部署不同的内容将localhost。我需要初始化SmtpClient以通过应用程序发送电子邮件

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

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

2 个答案:

答案 0 :(得分:3)

如果你想配置SmtpClient类,你应该看一下system.net> mail.config:http://msdn.microsoft.com/en-us/library/w355a94k.aspx

的mailsettings条目
<configuration>
    <system.net>
        <mailSettings>
            <smtp deliveryMethod="network">
                <network
                    host="localhost"
                    port="25"
                    defaultCredentials="true"
                />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>

使用无参数构造函数

实现StmpClient
var client = new SmtpClient();

答案 1 :(得分:0)

如果您使用

    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)

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