.net core webapi 后台获取客户端ip地址
Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
1、获取客户端IP地址实现方法(扩展类)

1 using Microsoft.AspNetCore.Http;
2 using Microsoft.AspNetCore.Mvc.ModelBinding;
3 using System.Collections.Generic;
4 using System.Linq;
5
6 namespace WebApi.Controllers
7 {
8 /// <summary>
9 /// 扩展类
10 /// </summary>
11 public static class Extension
12 {
13 /// <summary>
14 /// 获取客户Ip
15 /// </summary>
16 /// <param name="context"></param>
17 /// <returns></returns>
18 public static string GetClientUserIp(this HttpContext context)
19 {
20 var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
21 if (string.IsNullOrEmpty(ip))
22 {
23 ip = context.Connection.RemoteIpAddress.ToString();
24 }
25 return ip;
26 }
27 }
28 }

调用该方法:
var ip = HttpContext.GetClientUserIp();
2、解决Asp.Net Core2.0发布到Ubuntu后不能正确获取客户IP解决办法

1 /// <summary>
2 ///
3 /// </summary>
4 /// <param name="app"></param>
5 /// <param name="env"></param>
6 /// <param name="loggerFactory"></param>
7 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
8 {
9 #region 解决Ubuntu Nginx 代理不能获取IP问题
10 app.UseForwardedHeaders(new ForwardedHeadersOptions
11 {
12 ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
13 });
14 #endregion
15 }

本人站点用的是Nginx进行代理,而站点指向是本地Ip,不能正确获得客户的IP,这时就需要通过Nginx获取到的IP传递给站点
Nginx的配置

1 server {
2 listen 80;
3 server_name www.xxx.com;
4 root /var/www/html;
5 index index.html index.htm index.nginx-debian.html;
6
7 location / {
8 proxy_pass http://localhost:5000;
9 proxy_http_version 1.1;
10 proxy_set_header Upgrade $http_upgrade;
11 proxy_set_header Connection keep-alive;
12 proxy_set_header Host $host;
13 proxy_set_header X-Real-IP $remote_addr;
14 proxy_cache_bypass $http_upgrade;
15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
16 }
17 }

重启Nginx:
sudo service nginx restart;
.net core webapi 后台获取客户端ip地址的更多相关文章
- C# WebApi 获取客户端ip地址
转自:http://www.cnblogs.com/weixing/p/5674078.html References required: HttpContextWrapper - System.We ...
- 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...
- JAVA获取客户端IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- (转)【ASP.NET开发】获取客户端IP地址 via C#
[ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...
- php获取客户端ip地址
本文介绍一个,php获取客户端的IP地址的实例代码,有需要的朋友参考下吧. 获取客户端IP地址的代码,如下: 复制代码代码示例: <?php//取得客户端IP的函数function get_cl ...
- 获取客户端IP地址 via C#
获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己在项目中做过的事情,同 ...
- thinkphp 获取客户端ip地址方法
/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有 ...
- 获取客户端IP地址定位城市信息
获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...
- Tp框架获取客户端IP地址
/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @return mixed */ function get_cl ...
随机推荐
- 常用的ORM框架
现在,很多项目使用ORM的框架构架实现数据持久层,下面列举一些常用的ORM框架有,后续分节介绍. Java:Hibernate和Mybatis(前身iBatis) .Net:EF6与EFCore.Da ...
- Spring加载加密的配置文件
一.继承并实现自己的属性文件配置器类 /** * 带加密的Spring属性配置文件扩展类 * 加密方式:AES * @author simon * */ public class EncryptPro ...
- Java学习——面向对象【3】
1. 继承 java的类是单继承(一个子类只能继承一个父类),不能多继承(多个父类):A继承自B,A也继承自C,可以多重继承,就是A继承自B,B继承自C(A->B->C), 所有的类都继 ...
- iOS -- Effective Objective-C 阅读笔记 (3)
1: 理解 属性 的概念 属性会自动生成存取方法, 可以利用点语法调用, 若不想编译器自动合成存取方法, 可以自己实现, 还有另外一种方法, 就是使用 @dynamic 关键字, 它会告诉编译器, ...
- easyUI详解
1.EasyUI 是前端框架,封装大量 css和封装大量 JS 2.使用前端框架时,给标签定义class 属性,就会有样式和脚本功能了 3.data-options 属性是定义 easyui 属性的, ...
- Fatal error: Uncaught Error: Call to undefined function mysqli_connect()
sudo apt-get install php7.2-mysql //版本号肯能不一样 sudo dpkg-reconfigure php7.2-mysql sudo /etc/init.d/m ...
- laravel 统计数据
//根据format字符串格式化date值.下列修饰符可以被用在format字符串中: //%M 月名字(January……December) //%W 星期名字(Sunday……Saturday ...
- poj1185 状态压缩经典题
状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态 ...
- php url函数
1.base64_encode 与 base64_decode base64_encode(string) 表示使用 MIME base64 对数据进行编码 base64_decode(string) ...
- java Map按Key排序
public static void main(String[] args) { Map<String, String> map = new TreeMap<String, Stri ...