请求和请求之间的区别是什么?UserHostAddress和Request.ServerVariables["

本文关键字:请求 ServerVariables Request quot UserHostAddress 之间 求和 区别 是什么 | 更新日期: 2023-09-27 17:49:16

这里我可以使用这两种方法中的任何一种。有什么不同,我应该使用哪一个?

方法1:

    string srUserIp = "";
    try
    {
        srUserIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
    }
    catch
    {
    }
方法2:

    string srUserIp = "";
    try
    {
        srUserIp = Request.UserHostAddress.ToString();
    }
    catch
    {
    }

请求和请求之间的区别是什么?UserHostAddress和Request.ServerVariables["

简短的回答:两者是相同的。

长答:要确定两者之间的区别,请使用Reflector(或您喜欢的任何反汇编器)。

HttpRequest.UserHostAddress属性的代码如下:

public string UserHostAddress
{
    get
    {
        if (this._wr != null)
        {
            return this._wr.GetRemoteAddress();
        }
        return null;
    }
}

注意它返回_wr.GetRemoteAddress()_wr变量是HttpWorkerRequest对象的一个实例。HttpWorkerRequest衍生了不同的类,使用哪一个取决于您是否使用IIS 6, IIS 7或更高版本,以及其他一些因素,但您将在web应用程序中使用的所有类都具有相同的GetRemoteAddress()代码,即:

public override string GetRemoteAddress()
{
    return this.GetServerVariable("REMOTE_ADDR");
}

可以看到,GetRemoteAddress()只是返回服务器变量REMOTE_ADDR

至于使用哪一个,我建议使用UserHostAddress属性,因为它不依赖于"魔法字符串"。

快乐编程

没有区别。它们返回完全相同的值。然而,一个是智能感知友好的,而另一个不是。