博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.Net 获取客户端ip

Posted on 2008-10-29 09:10  Sunny Xu  阅读(4276)  评论(0编辑  收藏  举报

为日志添加登陆IP功能,使用page.request.userHostAddress可以实现:

Log.Write(base.User, Convert.ToInt32(LogProject.ProjectStartCancel), string.Format("{0}<br/>{1}撤销了{2}的立项申请", Page.Request.UserHostAddress, base.User.Name, project.Name), "撤销立项申请", Database);

但是,当调用的方法属于webMethod的时候就不能用了。请教了高手才明白,webMethod不属于任何页面,所以不能用上面的方法。因为任何用到reques和response的地方都有一个httpContex,所以我们可以使用HttpContex来获取request,如下:

 Log.Write(userName, Convert.ToInt32(LogProject.ProjectEndSubmit), string.Format("{0}<br/>{1}提交了{2}的结项申请", HttpContext.Current.Request.UserHostAddress, userName, project.Name), "提交结项申请", database);

从网上搜了一下.Net获取信息的方法还有:

1. 在ASP.NET中专用属性:
获取服务器电脑名:Page.Server.ManchineName
获取用户信息:Page.User
获取客户端电脑名:Page.Request.UserHostName
获取客户端电脑IP:Page.Request.UserHostAddress

2. 在网络编程中的通用方法:
获取当前电脑名:static System.Net.Dns.GetHostName()
根据电脑名取出全部IP地址:static System.Net.Dns.Resolve(电脑名).AddressList
也可根据IP地址取出电脑名:static System.Net.Dns.Resolve(IP地址).HostName

3. 系统环境类的通用属性:
当前电脑名:static System.Environment.MachineName
当前电脑所属网域:static System.Environment.UserDomainName
当前电脑用户:static System.Environment.UserName