Как получить HostName, Ip машины, на которой размещено приложение asp.net - PullRequest
2 голосов
/ 09 июня 2011

Как я могу получить LocalhostName, IP-адрес компьютера, на котором размещено Приложение. Для разработки это будет localhost для развертывания чего-то другого. Это мне нужно инициализировать SmtpClient для отправки писем через приложение

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

Я ищу постоянное решение, без обходных путей и без анализа ответа, запроса, и это может быть подделано [надеюсь, я не сумасшедший, потому что никто не может подделать данные серверов в заголовках, не так ли?]

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Если вы хотите настроить класс SmtpClient, вы должны взглянуть на запись system.net> mailsettings в файле web.config: http://msdn.microsoft.com/en-us/library/w355a94k.aspx

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

и создать экземпляр StmpClient с помощью конструктора без параметров

var client = new SmtpClient();
0 голосов
/ 09 июня 2011

если вы используете

    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)

это можно просто изменить, чтобы вернуть нужный вам адрес

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...