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

前端 未结 2 1320
执念已碎
执念已碎 2020-12-24 11:11

Here I can use either of these 2 methods. What are the differences and which one should I use?

Method 1:

    string srUserIp = \"\";         


        
相关标签:
2条回答
  • 2020-12-24 11:50

    Short answer: The two are identical.

    Long answer: To determine the difference between the two use Reflector (or whatever disassembler you prefer).

    The code for the HttpRequest.UserHostAddress property follows:

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

    Note that it returns _wr.GetRemoteAddress(). The _wr variable is an instance of an HttpWorkerRequest object. There are different classes derived from HttpWorkerRequest and which one is used depends on whether you are using IIS 6, IIS 7 or beyond, and some other factors, but all of the ones you would be using in a web application have the same code for GetRemoteAddress(), namely:

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

    As you can see, GetRemoteAddress() simply returns the server variable REMOTE_ADDR.

    As far as which one to use, I'd suggest the UserHostAddress property since is doesn't rely on "magic strings."

    Happy Programming

    0 讨论(0)
  • 2020-12-24 11:58

    There is no difference. They return exactly the same value. However, one is IntelliSense-friendly whereas the other is not.

    0 讨论(0)
提交回复
热议问题