用户使用IP地址打开网站时如何获取IPAddress?

时间:2013-01-23 06:26:37

标签: c# asp.net iis iis-7

我正在生成运行时<a>链接。要完成链接,我使用的是以下代码:

string appPath = protocol + System.Web.HttpContext.Current.Request.ServerVariables["HTTP_HOST"] + System.Web.HttpContext.Current.Request.ApplicationPath;

但是,当用户尝试从http://123.123.123.123/testApp开启网站时,我的链接是使用http://myservername.com/testApp创建的。

我想要用户输入的地址。

如果用户从http://123.123.123.123/testApp打开网站,则该链接应为

http://123.123.123.123/testApp/Default.aspx

如果用户从http://myservername.com/testApp打开网站,则链接应为

http://myservername.com/testApp/Default.aspx

3 个答案:

答案 0 :(得分:0)

使用REMOTE_ADDR服务器变量

string appPath = protocol + 
System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] + 
System.Web.HttpContext.Current.Request.ApplicationPath;

答案 1 :(得分:0)

HTTP_HOST or SERVER_NAME中的一个应该向您提供有关用户输入的内容的信息。最好使用Http调试器检查浏览器实际发送的IP地址,以确保检查正确的值。

   `HttpContext.Current.Request.ServerVariables("HTTP_HOST");` 

答案 2 :(得分:0)

使用此功能获取用户的IPAddress
但是你可能无法获得实际的IP。有许多问题,例如firewall等。这可能会为网络上的所有计算机公开相同的ip

    public static string GetMachineName(HttpRequest moRequest)
    {
        return moRequest.ServerVariables["HTTP_X_FORWARDED_FOR"] != null ||
               moRequest.ServerVariables["HTTP_CLIENT_IP"] != null
                   ? moRequest.ServerVariables["HTTP_X_FORWARDED_FOR"]
                   : moRequest.ServerVariables["REMOTE_ADDR"];
    }