gpt4 book ai didi

c# - Request.UserHostAddress 和 Request.ServerVariables ["REMOTE_ADDR".ToString() 有什么区别

转载 作者:IT王子 更新时间:2023-10-29 03:57:33 29 4
gpt4 key购买 nike

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

方法一:

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

}

方法二:

    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() 代码,即:

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

如您所见,GetRemoteAddress() 仅返回服务器变量 REMOTE_ADDR

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

快乐编程

关于c# - Request.UserHostAddress 和 Request.ServerVariables ["REMOTE_ADDR".ToString() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994582/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com