我在类中的一个函数叫做GetIpAddress(),它返回以下字符串: System.Web.HttpContext.Current.Request.ServerVariables [ “REMOTE_ADDR”]
这一切都适用于常规页面加载并获取我的IP地址,但是当我例如让用户发表评论时,在回发后ip地址丢失并且我返回一个空字符串。
我在这里错过了什么吗?
亲切的问候, 标记
答案 0 :(得分:1)
使用这些:
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // a user is going through a proxy server
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
HttpContext.Current.Request.UserHostAddress;
一些解释: REMOTE_ADDR发出请求的远程主机的IP地址。
REMOTE_HOST发出请求的主机的名称。如果服务器没有此信息,它将设置REMOTE_ADDR并将其保留为空。
答案 1 :(得分:0)
你把它包裹在这样的东西里吗?
if (!Page.IsPostBack) {
GetIpAddress()
}
您需要每次都调用该函数,或将其存储在共享变量中。
另一个选项(正如@Marc提到的那样)只是简单地调用Request.UserHostAddress
而不是GetIpAddress
...它的输入量几乎相同,但您不必拥有自定义功能为了它。