代码之家  ›  专栏  ›  技术社区  ›  Julian de Wit

在ASP.NET中检测/估计HTTP请求的国家/地区

  •  13
  • Julian de Wit  · 技术社区  · 17 年前

    我正在寻找检测/估计 国家 从哪一个 HTTP请求 来了 ASP.NET .
    我知道有一些服务/国家查询的解决方案,但我从未使用过。

    我正在寻找小的/干净的解决方案。
    这是为了帮助别人填写表格,所以它不必100%准确。

    提前谢谢……

    5 回复  |  直到 10 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    您可以使用一个可用的Web服务来匹配一个国家/地区的传入请求。

    否则,您可以决定获取MaxMind数据库文件( GeoLite Country ,从应用程序中的此文件中读取并执行匹配。因此,您将独立于第三方服务,只定期提取数据库文件的更新。

    还可以查看类似的问题:

    Geolocation web service recommendations

    Know a good IP address Geolocation Service?

        2
  •  11
  •   RichieHindle    12 年前

    您可以对此URL进行简单的HTTP请求:

    http://api.hostip.info/get_html.php?ip=207.46.197.32
    

    使用的值 REMOTE_ADDR 服务器变量。这将使国家和城市像这样回归:

    Country: UNITED STATES (US)
    City: New York, NY
    

    我将该服务用于Web表单,正如您所描述的那样。有时它不知道答案,但通常很好(而且它是免费的,简单的8-)

    在C中,您可以使用 System.Net.WebRequest.Create 从URL读取。

        3
  •  3
  •   Kevin Boyd    17 年前

    如果选择使用remote_addr server变量,则可以相当确定恢复的IP准确地表示该用户的原产国。对于一个用户来说,从他目前所在国家以外的地方访问互联网是很少见的,除了一些显著的例外,例如那些选择通过匿名代理服务器进行冲浪的人,如下面所讨论的。但是,如果您想要获得用户的状态,或者验证用户的身份,那么对于任何一种甚至是远程可靠的方法来说,您都不走运。

    更多信息 here.

        4
  •  0
  •   Robert Mars_win    10 年前

    我必须这样做,所以这里有一个工作示例(特定于法国),可能对某些人有用:

            string userIP = Request.ServerVariables["REMOTE_ADDR"];
            string localeAPIURL = "http://api.hostip.info/get_html.php?ip=" + userIP;
    
            HttpWebRequest r = (HttpWebRequest)WebRequest.Create(localeAPIURL);
            r.Method = "Get";
            HttpWebResponse res = (HttpWebResponse)r.GetResponse();
            Stream sr = res.GetResponseStream();
            StreamReader sre = new StreamReader(sr);
    
            // check response for FRANCE
            string s = sre.ReadToEnd();
            string sub = s.Substring(9, 6);
            if (sub == "FRANCE")
            {
                Response.Redirect("http://fr.mysite.com");
            }
    
        5
  •  0
  •   Joe Ratzer    10 年前

    这是我用过的:

    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                'url': 'http://www.freegeoip.net/json/@(HttpContext.Current.Request.UserHostAddress)',
                'type': 'GET',
                'success': function(data) {
                    // for example
                    if (data.country_code === "GB") {
                        ... further logic here
                    }
                }
            });
        });
    </script>
    

    简单,而且有效。

    推荐文章