Тот же код или нет для UserHostAddress?

#c# #asp.net

#c# #asp.net

Вопрос:

Идентичны ли два приведенных ниже метода?

 HttpContext.Current.Request.UserHostAddress
  

и

 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
  

Ответ №1:

Кажется, так. По данным ILSpy,

 HttpContext.Current.Request.UserHostAddress
  

сопоставляет с

 // System.Web.Hosting.ISAPIWorkerRequest
public override string GetRemoteAddress()
{
    return this.GetServerVariable("REMOTE_ADDR");
}
  

Так что, на мой взгляд, это одно и то же.

Комментарии:

1. До тех пор, пока HttpContext.Current. Запрос на самом деле является запросом ISAPIWorkerRequest. Я бы сказал, что вы не можете гарантировать, что они идентичны; тем более, что GetRemoteAddress() является виртуальным.

2. @ChristopheDebove ILSpy — это всегда удобный инструмент для изучения исходных текстов .NET Framework.