![](/img/trans.png)
[英]what is difference between Request.QueryString and Request.ServerVariables[“QUERY_STRING”]
[英]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.