Самый быстрый способ получить числовое значение IP-адреса запроса в ASP.NET

StackOverflow https://stackoverflow.com/questions/6383997

  •  28-10-2019
  •  | 
  •  

Вопрос

Каким будет самый быстрый способ получить числовой формат ( НЕ СТРОЧНЫЙ ФОРМАТ ) клиента?

Genracodicetagpre

Я могу вычислить это с помощью некоторого кода, например

Genracodicetagpre

на основе строки Request.UserHostAddress, но я надеялся, что IIS или ASP.NET предварительно вычислит ее, и она где-то спрятана в HttpContext.

Я не прав?

Это было полезно?

Решение

HttpContext, похоже, не творит больше волшебства, чем то, что вы уже видите: строковое значение в HttpRequest.UserHostAddress

Некоторая справочная информация:

HttpContext.Current.Request относится к типу System.Web.HttpRequest, который при создании принимает параметр System.Web.HttpWorkerRequestas.

HttpWorkerRequest - это абстрактный класс, созданный с помощью реализаций хостинга, таких как, в случае IIS, System.Web.Hosting.IIS7WorkerRequest, который затем реализует абстрактный метод GetRemoteAddress() для HttpWorkerRequest, который используется внутри HttpRequest.UserHostAddress.

IIS7HttpWorkerRequest знает, что REMOTE_ADDR - это свойство IIS, которое ему необходимо прочитать, и после прохождения еще нескольких уровней абстракции при передаче контекста запроса все это, наконец, заканчивается вызовом MgdGetServerVariableW(IntPtr pHandler, string pszVarName, out IntPtr ppBuffer, out int pcchBufferSize); в webengine.dll, который просто записывает строку length, сгенерируйте кодовый код в кодовый код, содержащий то же самое, что вы получаете от сгенерированного кода кода.

Поскольку я сомневаюсь, что в HttpContext есть другие части, которые получают информацию, связанную с запросом-отправителем, я предполагаю, что вам придется продолжать делать свою собственную магию для преобразования, для которой есть много идей в ссылке i размещены в комментариях.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top