2011-06-09 29 views
2

如何獲取託管應用程序的機器的LocalhostName,Ip。對於開發來說,它將是localhost,用於部署不同的東西。爲此,我需要初始化SmtpClient通過應用程序發送電子郵件如何獲得託管asp.net應用程序的機器的HostName,Ip

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

我正在尋找一個持久的解決方案,沒有變通方法,並沒有從響應,要求嗅探,這可能被欺騙[希望我是不是瘋了,因爲沒有人可以欺騙服務器上的數據文件頭中他們能]

回答

3

如果你想配置SmtpClient類,你應該看看在web.config的system.net> mailsettings項: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> 

聖堂聖堂mpClient與參數的構造函數

var client = new SmtpClient(); 
+0

@mathieu是否可以同時開發和部署系統?另外我如何現在初始化SmtpClient類。 – Deeptechtons 2011-06-09 08:20:48

+0

你可以使用特定的配置文件進行生產,如果smtp主機與開發不同 – mathieu 2011-06-09 08:25:42

+0

@mathieu我無法得到你。以上設置僅適用於localhost,這就是你的意思? – Deeptechtons 2011-06-09 08:27:16

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) 

這可以簡單地修改返回地址你需要

+0

真的不好主意 – Deeptechtons 2011-06-09 08:23:10

+0

@deeptechons爲什麼? – harryovers 2011-06-09 08:28:18

+0

我想知道的是有沒有什麼辦法可以獲得承載asp.net應用程序的機器的IP,HostName。我得到一個方法,我需要輸入每個主機,並檢查有效的主機? – Deeptechtons 2011-06-09 08:32:02