1.获取浏览器版本号

 /// <summary>
/// 获取浏览器版本号
/// </summary>
/// <returns></returns>
public static string GetBrowser()
{
HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
return bc.Browser + bc.Version;
}

2.获取操作系统版本号

 /// <summary>
/// 获取操作系统版本号
/// </summary>
/// <returns></returns>
public static string GetOSVersion()
{
//UserAgent
var userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"]; var osVersion = "未知"; if (userAgent.Contains("NT 6.1"))
{
osVersion = "Windows 7";
}
else if (userAgent.Contains("NT 6.0"))
{
osVersion = "Windows Vista/Server 2008";
}
else if (userAgent.Contains("NT 5.2"))
{
osVersion = "Windows Server 2003";
}
else if (userAgent.Contains("NT 5.1"))
{
osVersion = "Windows XP";
}
else if (userAgent.Contains("NT 5"))
{
osVersion = "Windows 2000";
}
else if (userAgent.Contains("NT 4"))
{
osVersion = "Windows NT4";
}
else if (userAgent.Contains("Me"))
{
osVersion = "Windows Me";
}
else if (userAgent.Contains(""))
{
osVersion = "Windows 98";
}
else if (userAgent.Contains(""))
{
osVersion = "Windows 95";
}
else if (userAgent.Contains("Mac"))
{
osVersion = "Mac";
}
else if (userAgent.Contains("Unix"))
{
osVersion = "UNIX";
}
else if (userAgent.Contains("Linux"))
{
osVersion = "Linux";
}
else if (userAgent.Contains("SunOS"))
{
osVersion = "SunOS";
}
return osVersion;
}

3.获取客户端IP地址

 /// <summary>
/// 获取客户端IP地址
/// </summary>
/// <returns></returns>
public static string GetIP()
{
string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.UserHostAddress;
}
if (string.IsNullOrEmpty(result))
{
return "0.0.0.0";
}
return result;
}

4.取客户端真实IP

 ///  <summary>
/// 取得客户端真实IP。如果有代理则取第一个非内网地址
/// </summary>
public static string GetIPAddress
{
get
{
var result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(result))
{
//可能有代理
if (result.IndexOf(".") == -) //没有“.”肯定是非IPv4格式
result = null;
else
{
if (result.IndexOf(",") != -)
{
//有“,”,估计多个代理。取第一个不是内网的IP。
result = result.Replace(" ", "").Replace("'", "");
string[] temparyip = result.Split(",;".ToCharArray());
for (int i = ; i < temparyip.Length; i++)
{
if (IsIPAddress(temparyip[i])
&& temparyip[i].Substring(, ) != "10."
&& temparyip[i].Substring(, ) != "192.168"
&& temparyip[i].Substring(, ) != "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["HTTP_X_REAL_IP"]; if (string.IsNullOrEmpty(result))
result = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"]; if (string.IsNullOrEmpty(result))
result = HttpContext.Current.Request.UserHostAddress; return result;
}
}

5.判断是否是IP格式

 ///  <summary>
/// 判断是否是IP地址格式 0.0.0.0
/// </summary>
/// <param name="str1">待判断的IP地址</param>
/// <returns>true or false</returns>
public static bool IsIPAddress(string str1)
{
if (string.IsNullOrEmpty(str1) || str1.Length < || str1.Length > ) return false; const string regFormat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$"; var regex = new Regex(regFormat, RegexOptions.IgnoreCase);
return regex.IsMatch(str1);
}

6.获取公网IP

 /// <summary>
/// 获取公网IP
/// </summary>
/// <returns></returns>
public static string GetNetIP()
{
string tempIP = "";
try
{
System.Net.WebRequest wr = System.Net.WebRequest.Create("http://city.ip138.com/ip2city.asp");
System.IO.Stream s = wr.GetResponse().GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
string all = sr.ReadToEnd(); //读取网站的数据 int start = all.IndexOf("[") + ;
int end = all.IndexOf("]", start);
tempIP = all.Substring(start, end - start);
sr.Close();
s.Close();
}
catch
{
if (System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.Length > )
tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[].ToString();
if (string.IsNullOrEmpty(tempIP))
return GetIP();
}
return tempIP;
}

.Net后台获取客户端信息的更多相关文章

  1. ASP.NET获取客户端信息,获取客户端IP等等

    山上明月 ASP.NET能知道的东西 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHo ...

  2. C# 获取客户端信息 /asp.net/WebService/WebForm

    Request.Browser.MajorVersion.ToString();//获取客户端浏览器的(主)版本号Request.Browser.Version.ToString();   //获取客 ...

  3. .net core webapi 后台获取客户端ip地址

    Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法   1.获取客户端IP地址实现方法(扩展类) 1 using Microsoft.AspNetC ...

  4. java获取客户端信息

    创建JSP页面 clientinfo <%@page import="java.util.StringTokenizer"%> <%@ page language ...

  5. php可获取客户端信息

    <?php echo "<br>".$_SERVER['PHP_SELF'];#当前正在执行脚本的文件名,与 document root相关 echo " ...

  6. node.js 获取客户端信息

    结果:

  7. 通过request对象获取客户端的相关信息

    通过request对象获取客户端的相关信息 制作人:全心全意 通过request对象可以获取客户端的相关信息.例如HTTP报头信息.客户信息提交方式.客户端主机IP地址.端口号等等. request获 ...

  8. Nginx反向代理后应用程序获取客户端真实IP

    Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的 ...

  9. 通过Request获取客户端的真实IP

    我们在做项目的时候经常需要获取客户端的真实ip去进行判断,为此搜索了相关文章,以下这个讲解的比较明白,直接拿来 https://blog.csdn.net/yin_jw/article/details ...

随机推荐

  1. Python打杂之路

    1.任务要落到纸上好记性不如烂笔头,再好的记性也不如写到纸上明确无误,写到纸上就不用担心会漏掉哪项工作.平时,我们总是在忙着一项工作的同时还惦记着下一项工作,把工作都记下后,我们就可以专注于一项工作, ...

  2. dedecms操作数据库

    重要的事情说三遍:代码复制完要格式化,格式化,格式化,最好重新抄一遍,小心陷阱 一.配置数据库配置文件路径/data/common.inc.php二.连接数据库dirname(__FILE__)表示当 ...

  3. APP自动化测试怎么测?

    一般来说工具还有技术都是千篇一律 测试测到最后还是业务能力...

  4. 【Linux】Memcached安装

    Memcached概念 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中, ...

  5. [原创汉化] 价值990美元的顶级专业数据恢复软件O&O DiskRecovery 11(技术员版)汉化绿色版

    百度没搜索到11有汉化版的,有空就把它汉化了,大部分借鉴的是以前汉化版的词条.另外,顺便做了个二合一的单文件版给有需要的朋友. 运行环境: 可用于 Windows 2000/XP/2003/Vista ...

  6. 2018.08.30 Tyvj1952 Easy(期望dp)

    Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...

  7. 2018.08.01 BZOJ4552: [Tjoi2016&Heoi2016]排序(二分+线段树)

    传送门 线段树简单题. 二分答案+线段树排序. 实际上就是二分答案mid" role="presentation" style="position: relat ...

  8. HDU 1513 && POJ 1159 Palindrome (DP+LCS+滚动数组)

    题意:给定一个字符串,让你把它变成回文串,求添加最少的字符数. 析:动态规划是很明显的,就是没有了现思路,还是问的别人才知道,哦,原来要么写,既然是回文串, 那么最后正反都得是一样的,所以我们就正反求 ...

  9. 20155226 2016-2017-2 《Java程序设计》第7周学习总结

    20155226 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 认识时间与日期 六个时间基准: 1.格林威治标准时间 2.世界时 3.国际原子时 4.世界协 ...

  10. 20155211 2016-2017-2 《Java程序设计》第七周学习总结

    20155211 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式中this的参考对象以及toString()的接受 ...