得到的ASP.NET Web API网页API消费者的IP地址和主机名 [英] Get Web Api consumer IP Address and HostName in ASP.NET Web API

查看:197
本文介绍了得到的ASP.NET Web API网页API消费者的IP地址和主机名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我主持在ASP.net开发的Web API。我想如果有人打电话给我的API,这样我就可以登录数据库中,以便以后如果我想用C#拒绝来自特定ID请求。

什么是得到消费者的IP和主机名的最佳做法?

 公共静态字符串GetIP4Address()
  {
    字符串IP4Address =的String.Empty;    的foreach(ip地址IPA在Dns.GetHostAddresses(Request.ServerVariables [REMOTE_ADDR]。的ToString())))
    {
      如果(IPA.AddressFamily.ToString()==网间)
      {
        IP4Address = IPA.ToString();
        打破;
      }
    }    如果(IP4Address!=的String.Empty)
    {
      返回IP4Address;
    }    的foreach(ip地址IPA在Dns.GetHostAddresses(Dns.GetHostName()))
    {
      如果(IPA.AddressFamily.ToString()==网间)
      {
        IP4Address = IPA.ToString();
        打破;
      }
    }    返回IP4Address;
  }


解决方案

解析名称听起来像一个坏主意。如果你是从客户机叫什么DNS没有解决?我告诉你,DNS需要永远,然后失败,你必须赶上和记录为未知主机名。

异常

至于申请地址,只是把它

  HttpContext.Current.Request.UserHostAddress

I have hosted Web Api developed in ASP.net. I want if someone call my API so I can log in database so later on if I want to reject request from particular id using C#.

What is best practice to get consumer IP and HostName?

public static string GetIP4Address()
  {
    string IP4Address = String.Empty;

    foreach (IPAddress IPA in Dns.GetHostAddresses(Request.ServerVariables["REMOTE_ADDR"].ToString())))
    {
      if (IPA.AddressFamily.ToString() == "InterNetwork")
      {
        IP4Address = IPA.ToString();
        break;
      }
    }

    if (IP4Address != String.Empty)
    {
      return IP4Address;
    }

    foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
    {
      if (IPA.AddressFamily.ToString() == "InterNetwork")
      {
        IP4Address = IPA.ToString();
        break;
      }
    }

    return IP4Address;
  }

解决方案

Resolving names sounds like a bad idea. What if you are called from a client machine that dns doesn't resolve? I tell you, dns takes forever and then fails with an exception you have to catch and log as "unknown host name".

As for request address, just get it with

 HttpContext.Current.Request.UserHostAddress

这篇关于得到的ASP.NET Web API网页API消费者的IP地址和主机名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆