asp.net c#ip地址在回发后丢失了吗?

时间:2010-03-08 17:48:23

标签: c# asp.net ip-address

我在类中的一个函数叫做GetIpAddress(),它返回以下字符串: System.Web.HttpContext.Current.Request.ServerVariables [ “REMOTE_ADDR”]

这一切都适用于常规页面加载并获取我的IP地址,但是当我例如让用户发表评论时,在回发后ip地址丢失并且我返回一个空字符串。

我在这里错过了什么吗?

亲切的问候, 标记

2 个答案:

答案 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 ...它的输入量几乎相同,但您不必拥有自定义功能为了它。