ASP.NET获取客户端IP地址
通常我们都通过下面的代码获得IP:
string ip =System.Web.HttpContext.Current.Request.UserHostAddress;
或 string ip =System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
REMOTE_ADDR 说明:
访问客户端的 IP 地址。
此项信息用户不可以修改。
如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。
但如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。
如何绕过代理服务器获得用户真实的IP地址呢?
private static string getIp()
{
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
else
return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
Request.ServerVariables["HTTP_VIA"] ,ServerVariables["HTTP_X_FORWARDED_FOR"],Request.ServerVariables["REMOTE_ADDR"]的值分下面几种情况:
一、没有使用代理服务器的情况:
REMOTE_ADDR = 用户的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 用户的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
三、使用普通匿名代理服务器的情况:Anonymous Proxies
&n
相关文档:
前面我们说过了 控制器(controller) 和方法(action)
本次要说的就是 View以及和控制器(controller)、方法(action)之间的关系;
大家都知道 MVC中的 V 就是View 的意思,就是 呈现给用户的界面,以往的asp.net项目中叫 webform,以前做asp.net的时候就是在工具箱里面拖控件出来,
然后简单的排版一下就ok了,大多数用的服 ......
方法1
HttpFileCollection files = HttpContext.Current.Request.Files;
//我设置的大小不超过A4纸的缩略图
int newWidth=620;
int newHeight=880;
System.Drawing.Image img = null;
for(int iFile = 0; iFile < files.C ......
在部署水晶报表时主要遇到支持组件的问题。
首先,需要在服务器上需要安装“CRRedist2008_x86.msi”和汉化包“CRRedist2008_x86_chs.msi”。
vs.net 2008,在这个目录
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5
vs.net 2005,在这个目录
C:\Progr ......
部门要做一个网站,我以前用的是php或asp做的,这回想改用asp.net做,主要基于两点考虑,第一:想通过asp.net学习c#及其.net框架。第二:自己又想偷懒,不想从头开始做网站,于是就想用开源的netcms来改改。于是有了我的系列文章。根据我的学习进度我会每天更新,请朋友们关注。 ......
新手如何学习c#、asp.net、ado.net和.NET
如果你已经有较多的面向对象开发经验,跳过以下这两步:
第一步 掌握一门.NET面向对象语言,C#或VB.NET。
在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。
ASP.NET是一个全面向对象的技术,不懂OO,那绝对学 ......