using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
/// <summary>
/// 判断是否是IP地址格式 0.0.0.0
/// </summary>
/// <param name="str1">待判断的IP地址</param>
/// <returns>true or false</returns>
public static bool IsIPAddress(string str1)
{
if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false;
string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";
Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
return regex.IsMatch(str1);
}
/// <summary>
/// 取得客户端真实IP。如果有代理则取第一个非内网地址
/// </summary>
public static string IPAddress
{
get
{
string result = String.Empty;
result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (result != null && result != String.Empty)
{
//可能有代理
if (result.IndexOf(".") == -1) //没有“.”肯定是非IPv4格式
result = null;
else
{
if (result.IndexOf(",") != -1)
{
//有“,”,估计多个代理。取第一个不是内网的IP。
result = result.Replace(" ", "").Replace("'", "");
string[] temparyip = result.Split(",;".ToCharArray());
for (int i = 0; i < temparyip.Length; i++)
{
if (IsIPAddress(temparyip[i])
&& temparyip[i].Substring(0, 3) != "10."
&& temparyip[i].Substring(0, 7) != "192.168"
&& temparyip[i].Substring(0, 7) != "172.16.")
{
return temparyip[i]; //找到不是内网的地址
}
}
}
else if (IsIPAddress(result)) //代理即是IP格式
return result;
else
result = null; //代理中的内容 非IP,取IP
}
}
string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (null == result || result == String.Empty)
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (result == null || result == String.Empty)
result = HttpContext.Current.Request.UserHostAddress;
return result;
}
}
分享到:
相关推荐
在ASP.NET中,获取客户端IP地址是通过`HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]`来实现的。然而,当用户通过代理服务器访问时,这个方法可能不会返回实际的客户端IP,而是返回代理服务器的IP。...
在ASP.NET开发中,了解如何获取...总之,在ASP.NET中获取客户端IP地址和用户名是通过利用内置的对象和方法,或者自定义逻辑来实现的。理解这些基本原理和技巧对于开发具有用户追踪和个性化功能的Web应用至关重要。
#### 一、获取客户端IP地址 在ASP.NET中,获取客户端的IP地址是常见的需求之一,这通常用于日志记录、安全控制或者地理位置定位等功能。 1. **通过`Page.Request.UserHostAddress`** 这是最简单直接的方式,它会...
在给定的场景中,我们关注的是如何在ASP.NET环境中获取客户端的MAC(物理)地址。MAC地址是网络设备如计算机、路由器等在网络层的唯一标识,通常在局域网(LAN)中使用。 在ASP.NET中获取客户端MAC地址是一项挑战,...
4. **Page.Request.UserHostAddress**:返回客户端IP地址。 ```csharp string clientIPAddress = Page.Request.UserHostAddress; ``` 这些方法简单易用,适用于大多数情况下的客户端信息获取。 #### 二、使用...
获取客户端IP地址 在ASP.NET中,可以通过`HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]`来获取客户端的IP地址。这个值主要用于处理通过代理服务器转发的请求。如果该变量为空或者不存在,...
asp.net 获取客户端ip和mac地址
在ASP.NET中,可以通过`HttpRequest`对象的`UserHostAddress`属性来获取用户的IP地址。例如: ```csharp string clientIP = HttpContext.Current.Request.UserHostAddress; ``` 接下来,为了判断IP地址的区域,...
在ASP.NET中,获取客户端MAC(Media Access Control)地址是一项常见的需求,特别是在网络管理、设备认证或者特定的安全应用场景中。MAC地址是网络设备的物理地址,用于标识连接到网络的设备。然而,由于HTTP协议的...
总的来说,获取客户端IP地址在ASP.NET中相对简单,而获取MAC地址则涉及更复杂的网络环境和用户隐私问题,通常不直接在Web应用中操作。开发者应遵循最小权限原则和尊重用户隐私,避免不必要的数据收集。
- `REMOTE_ADDR`:这个环境变量包含的是连接服务器的客户端IP地址,适用于直接连接到服务器的情况。 - `UserHostAddress`:这个属性返回客户端计算机的IP地址,适用于Web服务。 #### 二、获取本机MAC地址 1. **...
} }}在ASP.NET中获取客户端的MAC地址,通常是因为在某些场景下需要更精确地识别用户,例如防止重复投票或者限制特定设备的访问。然而,需要注意的是,由于浏览器的安全限制,直接通过HTTP协议是无法直接获取到...
在***开发中,获取客户端IP地址是一个基本需求,尤其在我们需要记录用户访问日志、进行安全控制或实现地理位置相关的功能时。由于***可能部署在多层网络中,例如有负载均衡器或者代理服务器,所以获取真实的客户端IP...
给定的代码片段展示了如何通过ASP.NET页面内的JScript脚本来调用WMI服务并获取MAC地址、IP地址以及DNS主机名。具体步骤如下: - 创建`locator`对象用于连接WMI服务。 - 使用`ConnectServer()`方法建立连接。 -...
在ASP.NET中,获取客户端IP地址相对简单,可以使用`Request.UserHostAddress`属性。这个属性会返回HTTP请求头部的“X-Forwarded-For”或“REMOTE_ADDR”,前者优先,后者是默认值,这两个头信息通常包含客户端的公共...
总之,在ASP.NET中获取客户端IP地址主要依赖于`HttpRequest`对象的`UserHostAddress`属性,以及可能需要考虑的`HTTP_X_FORWARDED_FOR`头字段。理解这些概念对于开发涉及用户定位或行为追踪的ASP.NET应用至关重要。
在ASP.NET开发中,获取客户端IP地址是一项常见的需求,这对于实现如访问统计、地理位置定位、安全防护等功能至关重要。本文将详细讲解如何在ASP.NET中获取客户端的IP地址,并结合提供的资源进行讨论。 首先,我们...
在ASP.NET开发中,有时我们需要获取服务器或者客户端的IP地址和MAC...获取本地IP和MAC地址相对简单,而获取客户端IP地址需要考虑代理情况,获取客户端MAC地址则受到限制。在实际开发中,要根据具体需求选择合适的方法。
本文介绍了asp.net 获取客户端浏览器访问的IP地址的实例代码,分享给大家,自己也留个笔记 1、js方法 <!DOCTYPE html> <html> <head> <meta charset=UTF-8 /> <title>Document</...