Можно ли получить IP-адрес клиента из класса обслуживания (вне контроллера) в ASP.NET Ядро 3.1?

#asp.net-core-3.1

#asp.net-core-3.1

Вопрос:

Я видел много сообщений, в которых подробно описывается, как получить IP-адрес, находясь внутри контроллера, но у меня есть несколько служебных классов C #, которые выполняют большую часть работы, которые вызываются из контроллера.

Мне нужно иметь возможность получать IP-адрес клиента и т. Д. Из этих классов обслуживания, И я предпочел бы не отправлять контекст из контроллера в класс обслуживания. Возможно ли это?

Заранее благодарю вас.

Ответ №1:

Один из способов — передать HttpContext аргумент метода. Простое и понятное решение. К сожалению, не уверен в плюсах и минусах этого.

Другой способ, согласно ASP.NET Документация по ядру 3.1, вы можете внедрить IHttpContextAccessor и получить доступ HttpContext через нее. Это было бы более элегантным способом, ИМХО.