Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Azure云应用程序服务获取用户IP_C#_Azure_Model View Controller_Asp.net Core Mvc_Ip - Fatal编程技术网

C# 如何从Azure云应用程序服务获取用户IP

C# 如何从Azure云应用程序服务获取用户IP,c#,azure,model-view-controller,asp.net-core-mvc,ip,C#,Azure,Model View Controller,Asp.net Core Mvc,Ip,我正试图使用下面的代码让用户IP了解他们所在的国家,但当我在Azure中将我的MVC核心发布到应用程序服务时,IP地址作为IP从荷兰返回并分配给Microsoft Corporation,这是因为它托管在云中,并且正在拉入云IP吗?如果是这样的话,我该如何应对 string info = new WebClient().DownloadString("http://ipinfo.io"); return JsonConvert.DeserializeO

我正试图使用下面的代码让用户IP了解他们所在的国家,但当我在Azure中将我的MVC核心发布到应用程序服务时,IP地址作为IP从荷兰返回并分配给Microsoft Corporation,这是因为它托管在云中,并且正在拉入云IP吗?如果是这样的话,我该如何应对

string info = new WebClient().DownloadString("http://ipinfo.io");
            return JsonConvert.DeserializeObject<IpInfo>(info);
string info=new WebClient()。下载字符串(“http://ipinfo.io");
返回JsonConvert.DeserializeObject(信息);

请尝试以下代码,该代码可在网站上找到:

使用系统;
Net系统;
使用Newtonsoft.Json;
公共类GetGeoLocation
{
公共IPData GetIPGeoLocation(字符串IP)
{
WebClient客户端=新的WebClient();
//进行api调用并获得响应。
尝试
{
字符串响应=客户端。下载字符串(“http://ip-api.com/json/“+IP);
//反序列化响应JSON
IPData IPData=JsonConvert.DeserializeObject(响应);
如果(ipdata.status==“失败”)
{
抛出新异常(“无效IP”);
}
返回ipdata;
}
捕获(例外)
{
投掷;
}
}
公共静态void Main()
{
IPData IPData=新的GetGeoLocation().GetIPGeoLocation(“208.80.152.201”);
Console.WriteLine(ipdata.status+“-您的IP属于“+ipdata.region+”-“+ipdata.country+””);
}
}
公共类IPData
{
公共字符串状态{get;set;}
公共字符串国家{get;set;}
公共字符串countryCode{get;set;}
公共字符串区域{get;set;}
公共字符串regionName{get;set;}
公共字符串city{get;set;}
公共字符串zip{get;set;}
公共字符串lat{get;set;}
公共字符串lon{get;set;}
公共字符串时区{get;set;}
公共字符串isp{get;set;}
公共字符串org{get;set;}
公共字符串@as{get;set;}
公共字符串查询{get;set;}
}

以下是您可以使用的代码:

    var origin = Request.Headers.ContainsKey("CLIENT-IP") ? Request.Headers["CLIENT-IP"][0] : "";

其中Request是HTTP请求对象

嗯,您是从服务器发出请求的,对吗?那么它就是服务器的IP地址了?你不是这样做的。正如@juunas所说,这只会给你服务器的IP。如果您需要获取站点上访问者的IP,您首先需要捕获该IP,然后才能使用ipinfo.io API获取更多信息。你需要做更多的研究如何做到这一点,因为你今天的问题已经解决了。看看这个:
    var origin = Request.Headers.ContainsKey("CLIENT-IP") ? Request.Headers["CLIENT-IP"][0] : "";