在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得:

  • base.Request.GetOwinContext().Request.RemoteIpAddress

创建一个OwinSelfHost项目的大概过程:

  • 创建名称为OwinSelfHostSample的Windows窗体应用(.NET Framework)项目;
  • 重命名Form1为MainForm;
  • 在NuGet包管理器中添加中添加Microsoft.AspNet.WebApi.OwinSelfHost;
  • 添加Startup类;
  • 添加控制器类MainController。

各个类的代码如下:

  • Program
 1 using System;
2 using System.Windows.Forms;
3
4 namespace OwinSelfHostSample
5 {
6 internal static class Program
7 {
8 [STAThread]
9 static void Main()
10 {
11 Application.EnableVisualStyles();
12 Application.SetCompatibleTextRenderingDefault(false);
13 Application.Run(new MainForm());
14 }
15 }
16 }
  • Startup
 1 using Owin;
2 using System.Net.Http.Headers;
3 using System.Web.Http;
4
5 namespace OwinSelfHostSample
6 {
7 internal class Startup
8 {
9 public void Configuration(IAppBuilder appBuilder)
10 {
11 var config = new HttpConfiguration();
12 config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
13
14 appBuilder.UseWebApi(config);
15 }
16 }
17 }
  • MainController
 1 using System.Net.Http;
2 using System.Web.Http;
3
4 namespace OwinSelfHostSample
5 {
6 public class MainController : ApiController
7 {
8 [HttpGet, HttpPost]
9 public IHttpActionResult GetClientIp()
10 {
11 var result = base.Request.GetOwinContext().Request.RemoteIpAddress;
12 return Ok(result);
13 }
14 }
15 }
  • MainForm
 1 using Microsoft.Owin.Hosting;
2 using System;
3 using System.Windows.Forms;
4
5 namespace OwinSelfHostSample
6 {
7 internal partial class MainForm : Form
8 {
9 public MainForm()
10 {
11 this.InitializeComponent();
12 }
13
14 private void button1_Click(object sender, EventArgs e)
15 {
16 WebApp.Start<Startup>("http://127.0.0.1:8090");
17 this.button1.Enabled = false;
18 }
19 }
20 }
  • packages.config
 1 <?xml version="1.0" encoding="utf-8"?>
2 <packages>
3 <package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net48" />
4 <package id="Microsoft.AspNet.WebApi.Client.zh-Hans" version="6.0.0" targetFramework="net48" />
5 <package id="Microsoft.AspNet.WebApi.Core" version="5.3.0" targetFramework="net48" />
6 <package id="Microsoft.AspNet.WebApi.Core.zh-Hans" version="5.3.0" targetFramework="net48" />
7 <package id="Microsoft.AspNet.WebApi.Owin" version="5.3.0" targetFramework="net48" />
8 <package id="Microsoft.AspNet.WebApi.Owin.zh-Hans" version="5.3.0" targetFramework="net48" />
9 <package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.3.0" targetFramework="net48" />
10 <package id="Microsoft.Owin" version="4.2.2" targetFramework="net48" />
11 <package id="Microsoft.Owin.Host.HttpListener" version="4.2.2" targetFramework="net48" />
12 <package id="Microsoft.Owin.Hosting" version="4.2.2" targetFramework="net48" />
13 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
14 <package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net48" />
15 <package id="Owin" version="1.0" targetFramework="net48" />
16 <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
17 <package id="System.Memory" version="4.5.5" targetFramework="net48" />
18 <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
19 <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
20 <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
21 </packages>

在OwinSelfHost项目中获取客户端IP地址的更多相关文章

  1. 在ASP.NET Core中获取客户端IP地址

    随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...

  2. 在ASP.NET Core 2.x中获取客户端IP地址

    一.前言 大家也知道服务端请求时我们获取的IP地址是包含在请求头中,因此这也大大便利了IP的获取. 在ASP.NET中,可以通过以下方式获取客户端的IP地址. HttpContext.Current. ...

  3. 再论 ASP.NET 中获取客户端IP地址

    说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分 ...

  4. vue中获取客户端IP地址(不需要额外引入三方文件)

    之前看了几种方法 ,都是引入腾讯,新浪,搜狐等的三方js文件来查询IP地址,但是我自己测试的时候IP地址不准确,所以就找了找,发现了这个方法,准确的获取到了IP地址和cmd的ipconfig获取到的I ...

  5. 集群环境下JSP中获取客户端IP地址的方法

    String ip = request.getHeader("X-Forwarded-For");if (ip == null || ip.length() == 0 || &qu ...

  6. (转)【ASP.NET开发】获取客户端IP地址 via C#

    [ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...

  7. 获取客户端IP地址 via C#

    获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己在项目中做过的事情,同 ...

  8. 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数

    在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...

  9. JAVA获取客户端IP地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  10. C# WebApi 获取客户端ip地址

    转自:http://www.cnblogs.com/weixing/p/5674078.html References required: HttpContextWrapper - System.We ...

随机推荐

  1. 🔥🔥v1.9.2-httpsok快速申请免费谷歌SSL证书

    v1.9.2-httpsok快速申请免费谷歌SSL证书 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx .OpenResty 服务器设计.已服务众多中小企业,稳定. ...

  2. 使用js有效括号匹配封装函数

    点击查看代码 function isValidParentheses(str) { // 定义一个栈,用于存储待匹配的左括号 let stack = []; // 定义一个对象,用于快速判断括号是否成 ...

  3. 密码学—Vigenere加密Python程序

    文章目录 维吉尼亚加密 加密算法 解密算法 注意事项 维吉尼亚加密 古典密码,属于多表加密. 怎么就是多表了? 维吉尼亚密码的加密算法实质是凯撒密码,因为他是先分好小组,然后用密钥串对应着分好组的每一 ...

  4. VisioForge.DotNet.Core.UI.WPF WPF摄像头 UVC 显示 支持 .net core

    Sample applications available at https://github.com/visioforge/.Net-SDK-s-samples . Please add Visio ...

  5. MySQL查看实时执行的SQL语句

    MySQL默认不能实时查看执行的SQL语句,因为这会消耗一定的资源. 要开启这个功能,稍微配置一下,打开这个LOG记录就可以了. 1 查看LOG功能 首先,查看是否已经开启实时SQL语句记录. mys ...

  6. uniapp 小程序分享功能

    上个月在做小程序的项目时,甲方需要给小程序添加个分享的功能,查看uniapp官方文档后,发现uniapp有自带的小程序分享功能(https://uniapp.dcloud.io/api/plugins ...

  7. 算法金 | 再见,PCA 主成分分析!

    ​大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 1. 概念:数据降维的数学方法 定义 主成分分析(PCA)是一种统计方法,通过正交变 ...

  8. C# asp.net mvc 创建虚拟目录

    使用背景: 虚拟目录(virtual directory),计算机术语,每个 Internet服务可以从多个目录中发布.通过以通用命名约定 (UNC) 名.用户名及用于访问权限的密码指定目录,可将每个 ...

  9. LeetCode 719. 找出第 k 小的距离对 (Java)

    题目: 给定一个整数数组,返回所有数对之间的第 k 个最小距离.一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值. 示例 1: 输入:nums = [1,3,1]k = 1输出:0 解释 ...

  10. 剑指Offer-64.滑动窗口的最大值(C++/Java)

    题目: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6, ...