湖上湖

该解决方案还涵盖了使用Owin自托管的Web API。部分地从这里。您可以在其中创建一个私有方法,ApiController无论您如何托管Web API,该方法都将返回远程IP地址: private const string HttpContext = "MS_HttpContext"; private const string RemoteEndpointMessage =     "System.ServiceModel.Channels.RemoteEndpointMessageProperty"; private const string OwinContext = "MS_OwinContext"; private string GetClientIp(HttpRequestMessage request) {       // Web-hosting       if (request.Properties.ContainsKey(HttpContext ))       {            HttpContextWrapper ctx =                 (HttpContextWrapper)request.Properties[HttpContext];            if (ctx != null)            {                return ctx.Request.UserHostAddress;            }       }       // Self-hosting       if (request.Properties.ContainsKey(RemoteEndpointMessage))       {            RemoteEndpointMessageProperty remoteEndpoint =                (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessage];            if (remoteEndpoint != null)            {                return remoteEndpoint.Address;            }        }       // Self-hosting using Owin       if (request.Properties.ContainsKey(OwinContext))       {           OwinContext owinContext = (OwinContext)request.Properties[OwinContext];           if (owinContext != null)           {               return owinContext.Request.RemoteIpAddress;           }       }        return null; }所需参考资料:HttpContextWrapper -System.Web.dllRemoteEndpointMessageProperty -System.ServiceModel.dllOwinContext -Microsoft.Owin.dll(如果使用Owin包,则已经有了)此解决方案的一个小问题是,当您在运行时实际上只使用其中的一种情况时,必须为所有3种情况加载库。作为建议在这里,这可以通过使用可以克服dynamic变量。您也可以将GetClientIpAddress方法编写为的扩展HttpRequestMethod。using System.Net.Http;public static class HttpRequestMessageExtensions{    private const string HttpContext = "MS_HttpContext";    private const string RemoteEndpointMessage =        "System.ServiceModel.Channels.RemoteEndpointMessageProperty";    private const string OwinContext = "MS_OwinContext";    public static string GetClientIpAddress(this HttpRequestMessage request)    {       // Web-hosting. Needs reference to System.Web.dll       if (request.Properties.ContainsKey(HttpContext))       {           dynamic ctx = request.Properties[HttpContext];           if (ctx != null)           {               return ctx.Request.UserHostAddress;           }       }       // Self-hosting. Needs reference to System.ServiceModel.dll.        if (request.Properties.ContainsKey(RemoteEndpointMessage))       {            dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];            if (remoteEndpoint != null)            {                return remoteEndpoint.Address;            }        }       // Self-hosting using Owin. Needs reference to Microsoft.Owin.dll.        if (request.Properties.ContainsKey(OwinContext))       {           dynamic owinContext = request.Properties[OwinContext];           if (owinContext != null)           {               return owinContext.Request.RemoteIpAddress;           }       }        return null;    }}现在您可以像这样使用它:public class TestController : ApiController{    [HttpPost]    [ActionName("TestRemoteIp")]    public string TestRemoteIp()    {        return Request.GetClientIpAddress();    }}

远程计算机IP地址如何获取,获取远程主机的IP地址相关推荐

  1. xp系统远程计算机需要网络打印机驱动,WinXP手动添加TCP/IP端口及安装打印机驱动(系统向导安装,不需要任何软件)...

    打印机驱动安装,一般情况下我们都建议客人使用"打印机驱动安装助手"安装,但有些电脑运行软件出错:或者是有些客人顾虑软件安全性:或者是服务器版本太老无法支持,所以做这个教程,脱离任何 ...

  2. 批处理处理远程计算机,使用DOS批处理命令实现远程主机的重启与关机、注销

    如果是win98系统: 在快捷方式的属性里输入如下内容:rundll32.exe,user.exe,exitwindows 如果是NT内核的系统,如:winxp win2000.2003(它里面没有s ...

  3. Java 网络实例一(获取指定主机的IP地址、查看端口是否已使用、获取本机ip地址及主机名、获取远程文件大小)

    获取指定主机的IP地址 import java.net.InetAddress; import java.net.UnknownHostException;public class GetIP {pu ...

  4. php查询ip归属地api接口_【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地...

    本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地>(点击打开链接)为姊妹篇,只是后端编程语言换成了php. 做出同样的效果,打开页面,得 ...

  5. php新浪获取ip接口,【php】利用新浪api接口与php获取远程数据的步骤,获取IP地址,并获取相应的IP归属地...

    [php]利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地 本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地 ...

  6. 批处理获取计算机域名,用批处理获取局域网中电脑ip和mac地址表

    用批处理获取局域网中电脑ip和mac地址表 为了避免IP地址抵触和体系安全,局域网中电脑的IP地址和MAC地址对照表是要常常备份的.除了能够运用软件处理外,用细巧专心的批处理也是一个不错的挑选.用记事 ...

  7. JAVA获取局域网内对应IP电脑的MAC地址(物理地址)

    创建类UdpGetClientMacAddr.java package com.shuzhiqiang.common;import java.io.IOException; import java.n ...

  8. 获取局域网远程主机ipv6地址

    复现CVE-2020-16898 TCP/IP远程代码执行漏洞时,需要目标主机ipv6地址,如果靶机不在本地,如何获取局域网远程主机ipv6呢? 扫描局域网同网段IP,获取存活主机(或者使用arp - ...

  9. 剑走偏锋--使用WMI获取远程计算机进程程序集中查毒病毒打造内网安全环境

    剑走偏锋-使用WMI获取远程计算机进程程序 集中查毒病毒打造内网安全环境 作者:高玉涵 时间:2019.04.1815:45 博客:blog.csdn.net/cg_i 作者背景环境参见: <由 ...

  10. golang 获取公网ip 内网ip 检测ip类型 校验ip区间 ip地址string和int转换 判断ip地区国家运营商

    目录 简要简介net包 什么是外网IP和内网IP? 获取公网ip 获取本地ip 判断是否是公网ip ip地址string转int ip地址int转string 判断ip地址区间 通过淘宝接口根据公网i ...

最新文章

  1. 黑马程序员java笔记之二-----多线程
  2. 旅游资源及线路管理系统
  3. php amp ldquo 转换,php与html代码的若干转换
  4. JVM 学习笔记 1. JVM 运行模型
  5. epoll.h 源码记录
  6. nginx加载html目录下图片,nginx配置访问图片路径以及html静态页面的调取方法
  7. java 缓冲流_Java缓冲流的使用
  8. 监督学习 | 集成学习 之Bagging、随机森林及Sklearn实现
  9. express使用JWT和httpOnly cookie进行安全验证
  10. 系统500报警 php_Zabbix3.4 部署、监测及邮件报警
  11. php导入sql文件到数据库中,PHP执行SQL文件并将SQL文件导入到数据库
  12. JS基础入门篇(四)—this的使用,模拟单选框,选项卡和复选框
  13. matlab 输出 syms,matlab中latex和syms的完美结合
  14. Tribler for Mac(BT资源搜索下载器)
  15. gcc -m32报错解决
  16. Class文件结构神秘的微笑(二)
  17. 11.[STM32]PWM脉宽调制-呼吸灯
  18. 复旦大学计算机专业博士生导师,危辉 - 复旦大学 - 计算机科学技术学院
  19. 方方格子excel工具箱 Excel表格处理必备
  20. IT 行业最宜居的城市是哪里?

热门文章

  1. abap bdc附加选项
  2. YTU 3413: 小姬小姬小姬
  3. 2020芝加哥计算机博士生录取,2020年芝加哥大学博士面试后多久知道结果
  4. 增强现实与虚拟现实_增强现实相关的法律问题
  5. 深度学习相关学术会议
  6. C语言----排班系统
  7. 中小学学校视频直播系统怎么搭建
  8. c语言link.exe错误,C语言,执行 link.exe 时出错
  9. 命不好,因为你同床共枕的人
  10. 2012年度注册测绘师资格考试江西-考区合格人员名单