Request.UserHostAddress和Request.ServerVariables 之间的区别是什么?ToString()
在这里我可以使用这两种方法中的任何一种。 有什么区别,我应该使用哪一个?
方法1:
string srUserIp = ""; try { srUserIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); } catch { } 方法2:
  string srUserIp = ""; try { srUserIp = Request.UserHostAddress.ToString(); } catch { } 
	
简短的回答:两者是相同的。
长答案:确定两个使用reflection器(或任何反汇编你喜欢)之间的差异。
  HttpRequest.UserHostAddress属性的代码如下所示: 
 public string UserHostAddress { get { if (this._wr != null) { return this._wr.GetRemoteAddress(); } return null; } } 
 请注意,它返回_wr.GetRemoteAddress() 。  _wrvariables是一个HttpWorkerRequest对象的实例。 有从HttpWorkerRequest派生的不同的类和使用哪一个取决于您是否使用IIS 6,IIS 7或更高版本,以及其他一些因素,但是所有在Web应用程序中使用的类都具有相同的GetRemoteAddress()代码GetRemoteAddress() ,即: 
 public override string GetRemoteAddress() { return this.GetServerVariable("REMOTE_ADDR"); } 
 正如你所看到的, GetRemoteAddress()只是返回服务器variablesREMOTE_ADDR 。 
 至于哪一个使用,我build议UserHostAddress属性,因为是不依赖“魔术string”。 
快乐的编程
没有区别。 他们返回完全相同的价值。 但是,一个是IntelliSense友好的,而另一个不是。