首页 > 其他分享 >在SelfHost项目中获取客户端IP地址

在SelfHost项目中获取客户端IP地址

时间:2024-07-04 22:44:40浏览次数:1  
标签:SelfHost IP地址 System new var using config 客户端

在SelfHost项目中,获取客户端的IP地址比OwinSelfHost项目要复杂一些,可以通过以下方法获得:

  • base.Request.Properties["System.ServiceModel.Channels.RemoteEndpointMessageProperty"].Address

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

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

各个类的代码如下:

  • Program
 1 using System;
 2 using System.Windows.Forms;
 3 
 4 namespace SelfHostSample
 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 }
  • MainController
 1 using System.ServiceModel.Channels;
 2 using System.Web;
 3 using System.Web.Http;
 4 
 5 namespace SelfHostSample
 6 {
 7     public class MainController : ApiController
 8     {
 9         [HttpGet, HttpPost]
10         public IHttpActionResult GetClientIp()
11         {
12             var result = string.Empty;
13 
14             if (base.Request.Properties.TryGetValue("MS_HttpContext", out var value1))
15             {
16                 result = ((HttpContextWrapper)value1).Request.UserHostAddress;
17             }
18 
19             if (base.Request.Properties.TryGetValue(RemoteEndpointMessageProperty.Name, out var value2))
20             {
21                 result = ((RemoteEndpointMessageProperty)value2).Address;
22             }
23 
24             return Ok(result);
25         }
26     }
27 }
  • MainForm
 1 using System;
 2 using System.Net.Http.Formatting;
 3 using System.Web.Http;
 4 using System.Web.Http.SelfHost;
 5 using System.Windows.Forms;
 6 
 7 namespace SelfHostSample
 8 {
 9     internal partial class MainForm : Form
10     {
11         public MainForm()
12         {
13             this.InitializeComponent();
14         }
15 
16         private void button1_Click(object sender, EventArgs e)
17         {
18             var config = new HttpSelfHostConfiguration("http://127.0.0.1:8090/");
19             config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
20             config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(new JsonMediaTypeFormatter()));
21             
22             var server = new HttpSelfHostServer(config);
23             server.OpenAsync().Wait();
24 
25             this.button1.Enabled = false;
26         }
27     }
28 }
  • 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.SelfHost" version="5.3.0" targetFramework="net48" />
 8   <package id="Microsoft.AspNet.WebApi.SelfHost.zh-Hans" version="5.3.0" targetFramework="net48" />
 9   <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
10   <package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net48" />
11   <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
12   <package id="System.Memory" version="4.5.5" targetFramework="net48" />
13   <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
14   <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
15   <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
16 </packages>

标签:SelfHost,IP地址,System,new,var,using,config,客户端
From: https://www.cnblogs.com/yiluxiangdong/p/18284824

相关文章

  • 在OwinSelfHost项目中获取客户端IP地址
    在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得:base.Request.GetOwinContext().Request.RemoteIpAddress创建一个OwinSelfHost项目的大概过程:创建名称为OwinSelfHostSample的Windows窗体应用(.NETFramework)项目;在NuGet包管理器中添加中添加Microsoft.AspNe......
  • Java SSH 客户端 如何删除 linux 机器上的 文件
    在Java中,可以使用SSH客户端库如JSch(JavaSecureChannel)来连接到远程Linux机器并执行命令,包括删除文件。下面是一个使用JSch库的示例,展示如何通过SSH删除远程Linux机器上的文件。步骤:添加JSch库:确保您的项目包含JSch库。如果您使用的是Maven,可以在pom.xml......
  • 安装mycli插件客户端工具
    客户端工具和mysql点击查看代码[root@localhostopt]#yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-devel[root@localhostopt]#tarzxvfPython-3.7.7_.tg......
  • 关于巴图自动化Profinet协议转Modbus协议网关模块怎么配置IP地址教学
    Profinet协议和Modbus协议是工业领域中常用的两种通讯协议,除此以外还有较为常见的:ModbusTCP协议,Profibus协议,ProfibusDP协议,EtherCAT协议,EtherNET协议,CAN,CANOPEN等它们在自动化控制系统中发挥着重要作用。而将Profinet协议和Modbus协议这两种协议设备进行连接的关键就是通过巴图......
  • Linux下使用arping检测IP地址是否冲突
    arping简介在Linux中,arping是一个用来发送ARP请求到一个相邻主机的工具,通常用于检测网络上的IP地址冲突。使用arping检测IP地址是否冲突的方法例1:使用如下命令检测10.206.216.95是否冲突(使用-I参数指定网络接口)#arping-Ieth010.206.216.95ARPING10.206.216.95......
  • 客户端渗透
    1.一键可执行程序2.给程序加壳3.宏病毒感染文档4.Androidapk利用1.一键可执行程序介绍:我们要进行客户端渗透,我们生成一个可执行程序,也是简单粗暴,MSF建立监听,把它发给受害者,只要受害者点击,监听机监听的机器直接上线(现在这种方法一般不会成功,杀毒软件会直接杀掉,这个程序......
  • CocosCreator客户端优化系列:CPU占用及性能优化
    CocosCreator客户端优化系列(四):CPU占用及性能优化转载请保留原文链接:https://blog.csdn.net/zzx023/article/details/88991314这篇文章是优化系列的最后一篇了,内容会长一些,更多的是提供一些方向以及思路,具体的一些细节由于篇幅有限,就不一一说明了,只要找对方向,就可以慢慢研究。希望......
  • Hyper-V虚拟机固定IP地址(手把手教设置)
    链接虚拟机修改网络配置文件输入指令sudovi/etc/sysconfig/network-scripts/ifcfg-eth0然后输入 按 i 键再按回车(enter)进入编辑模式修改配置(这几项)其中 IPADDR就是你想给虚拟机固定的IP地址多台的话只需要修改这个IP就行其他不变BOOTPROTO=staticI......
  • nginx配置获取客户端的真实ip
    https://blog.csdn.net/superzhang6666/article/details/132901093 对于nginx获取客户端真实ip做个总结对于首层代理服务器,使用proxy_set_headerX-Forwarded-For$remote_addr;来将客户端IP赋值给X-Forwarded-For请求头对于非首层代理服务器,使用proxy_set_headerX-Forwarded......
  • 校验IP地址格式:IPv4、IPv6、IP/掩码和IP段
    校验IP地址格式:IPv4、IPv6、IP/掩码和IP段https://www.jianshu.com/p/95d51e51cc2eIPv4格式验证IPv4是32位地址,由四个十进制数(0-255)组成,以点分隔。以下是一个IPv4地址的示例:192.168.0.1。要验证输入是否符合IPv4格式,我们可以使用正则表达式进行匹配。下面是一个JavaScript......