2010-03-08 62 views
0

我的一个类中的函数被调用GetIpAddress()返回以下字符串: System.Web.HttpContext.Current.Request.ServerVariables [“REMOTE_ADDR”]asp.net c#ip地址丢失后回发?

这一切运作良好定期页面加载和得到我的IP地址,但是当我例如让用户发表评论时,则IP地址在回发后丢失,并且我得到返回的空字符串。

我在这里错过了什么吗?

亲切的问候, 马克

+0

当您使用Request.UserHostAddress时会发生什么? – Marc 2010-03-08 17:52:05

+0

您可以显示您调用GetIpAddress()或至少在哪个事件中的代码区域吗? – curtisk 2010-03-08 17:56:05

回答

0

你有它包裹在这样的事情?

if (!Page.IsPostBack) { 
    GetIpAddress() 
} 

您需要每次调用该函数或将其存储在共享变量中。

另一个选项(As @Marc提到)可以简单地调用Request.UserHostAddress而不是GetIpAddress ......它的键入量几乎相同,但是您不必为其定制函数。

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并将其保留为空。