HttpContext.Current.Request.ServerVariables ["REMOTE_ADDR"] возвращает IPv6 - PullRequest
0 голосов
/ 07 сентября 2011

Microsoft HttpContext.Current.Request.ServerVariables ["REMOTE_ADDR"] возвращает IPv6 для удаленного клиента. Однако мне нужно использовать эти данные для таблицы журналов сеансов, где столбец ClientIP имеет тип varchar (15) ... IOW, мне нужен IP-адрес клиента IPv4, так как IPv6 вызывает ошибку усечения строки.

Это выполнимо?

1 Ответ

2 голосов
/ 08 сентября 2011

Нет, адреса IPv4 и IPv6 клиента полностью не связаны, поэтому вы не можете найти чей-либо адрес IPv4, когда он подключается через IPv6. Возможно, у них даже нет адреса IPv4 ... Или, по крайней мере, нет уникального адреса IPv4. Все больше и больше интернет-провайдеров начнут делиться IPv4-адресами между клиентами, потому что у них недостаточно IPv4-адресов, чтобы предоставить каждому пользователю свой. Это также означает, что IPv4-адрес пользователя может со временем меняться, если IPv4-адрес поступает из пула адресов, которые разделяют клиенты.

Конечно, вы можете попытаться подключить пользователя по IPv4. Но, как я уже сказал: нет гарантии, что это даст вам что-то полезное. И в (ближайшем) будущем станет хуже ...

...