Как вы получаете эфемерный номер порта клиента в ASP .NET? - PullRequest
5 голосов
/ 25 августа 2011

Я хотел бы отслеживать сеансы клиента по соединению (не состояние сеанса или куки) в ASP .NET.Я планировал сделать это, используя IP-адрес клиента и эфемерный номер порта .

. Вы можете получить IP-адрес в ASP .NET через

  • HttpContext.Current.Request.UserHostAddress
  • HttpContext.Current.Request.ServerVairables["REMOTE_ADDR"].

Ни один из них не даст вам номер порта ответа.Есть ли другой способ получить это?Это вообще возможно?

Ответы [ 4 ]

9 голосов
/ 25 августа 2011
HttpContext.Current.Request.ServerVariables["REMOTE_PORT"].
                                                    ^^^^

возможно?

1 голос
/ 04 ноября 2015

Получить текущий HTTP-контекст:
Если вы делаете это в контроллере MVC, вы можете вместо этого напрямую использовать свойство HttpContext контроллера.

var context = HttpContext.Current as IServiceProvider;

Затем получите рабочий запрос HTTP:

var request = context.GetService(
    typeof(HttpWorkerRequest)) as HttpWorkerRequest;

Затем вы можете получить временный номер порта клиента, например:

var port = request.GetRemotePort();
1 голос
/ 25 августа 2011

Вы не можете сделать это для обычного просмотра веб-страниц, поскольку HTTP-соединения между клиентом и сервером недолговечны.

Например, IIS7 указывает время ожидания по умолчанию, равное 120 с, после которого соединение будет разорвано.

В следующий раз, когда ваш браузер подключится к серверу, «эфемерный» номер порта, скорее всего, изменится (потому что он выбран случайным образом).

0 голосов
/ 03 января 2012

Это прекрасно работает.

string portNo = HttpContext.Current.Request.ServerVariables["SERVER_PORT"];

Вы можете посетить это:

http://www.w3schools.com/asp/coll_servervariables.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...