簡體   English   中英

Request.UserHostAddress和Request.ServerVariables [“REMOTE_ADDR”]之間有什么區別.ToString()

[英]What is the difference between Request.UserHostAddress and Request.ServerVariables[“REMOTE_ADDR”].ToString()

在這里我可以使用這兩種方法中的任何一種。 有什么區別,我應該使用哪一個?

方法1:

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

    }

方法2:

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

    }

簡短回答:兩者完全相同。

答案很長:確定兩者之間的區別使用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()代碼GetRemoteAddress() ,即:

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

如您所見, GetRemoteAddress()只返回服務器變量REMOTE_ADDR

至於使用哪一個,我建議使用UserHostAddress屬性,因為它不依賴於“魔術字符串”。

快樂的編程

沒有區別。 它們返回完全相同的值。 但是,一個是IntelliSense友好的,而另一個則不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM