40

アプリが(本番サーバーではなく)ローカルホストで実行されているかどうかを確認する方法はc#にありますか?

ローカルホストで実行されている特定のメールキューを使用する必要がある大量メールプログラムを作成しています。

if (Localhost)
{
Queue = QueueLocal;
}
else
{
Queue = QueueProduction;
}
4

11 に答える 11

78

コメントに正しい解決策があるので、回答として投稿します。

HttpContext.Current.Request.IsLocal 
于 2015-05-28T17:10:40.093 に答える
34

次のようなものはどうですか:

public static bool OnTestingServer()
    {
        string host = HttpContext.Current.Request.Url.Host.ToLower();
        return (host == "localhost");
    }
于 2012-08-06T18:53:21.217 に答える
22

現在の環境を示すアプリケーション構成ファイルの値を使用します。

asp.net を使用しているため、設定ファイルの変換を利用して、環境ごとに設定が正しいことを確認できます。

于 2012-08-06T18:53:56.527 に答える
20

これが機能するかどうかを確認します。

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;
}

参照: http://www.csharp-examples.net/local-ip/

于 2012-08-06T18:54:06.163 に答える
7

LocalhostのIPアドレスは一定です。これを使用して、ローカルホストかリモートユーザーかを判断できます。

ただし、本番サーバーにログインしている場合は、ローカルホストと見なされることに注意してください。

これは、IPv.4およびv.6を対象としています。

public static bool isLocalhost( )
{
    string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
    return (ip == "127.0.0.1" || ip == "::1");
}

コードが実行されているサーバーを完全に確認するには、MACアドレスを使用できます。

public string GetMACAddress()
{
    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    String sMacAddress = string.Empty;
    foreach (NetworkInterface adapter in nics)
    {
        if (sMacAddress == String.Empty)// only return MAC Address from first card  
        {
            IPInterfaceProperties properties = adapter.GetIPProperties();
            sMacAddress = adapter.GetPhysicalAddress().ToString();
        }
    } return sMacAddress;
}

差出人:http ://www.c-sharpcorner.com/uploadfile/ahsanm.m/how-to-get-the-mac-address-of-system-using-Asp-NetC-Sharp/

たとえば、web.configのMACアドレスと比較してください。

public static bool isLocalhost( )
{
    return GetMACAddress() == System.Configuration.ConfigurationManager.AppSettings["LocalhostMAC"].ToString();
}
于 2012-08-06T19:59:37.213 に答える
2

ちょうどこのような:

HttpContext.Current.Request.IsLocal

于 2016-03-23T18:27:20.360 に答える
1

string hostName = Request.Url.Host.ToString();

于 2019-11-29T03:54:55.063 に答える