В ASP.NET Core как проверить, является ли запрос локальным?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

27
задан Vadim Ovchinnikov 5 May 2018 в 09:20
поделиться

2 ответа

теперь его

HttpContext.Connection.IsLocal

, и если вам нужно проверить это вне контроллера, тогда вы берете зависимость от IHttpContextAccessor, чтобы получить к нему доступ.

Обновление основано на комментарии:

HttpContext изначально доступно в представлениях

@if (Context.Connection.IsLocal)
{

}
4
ответ дан Vadim Ovchinnikov 5 May 2018 в 09:20
поделиться

Ничто из вышеперечисленного не помогло мне.

Url.IsLocalUrl работает совсем по-другому, и я считаю его немного бесполезным:

Например, следующие URL-адреса считаются локальными:

  /Views/Default/Index.html
  ~/Index.html

Следующие URL не являются локальными:

  ../Index.html
  http://www.contoso.com/
  http://localhost/Index.html

HttpContext.Connection.IsLocal не существует в .Net Core 2.2

Сравнение ControllerContext.HttpContext.Connection.RemoteIpAddress и ControllerContext.HttpContext.Connection.LocalIpAddress также не работает в мой тест, потому что я получаю ":: 1" для удаленного IP и "127.0.0.1" для локального IP.

Наконец, я использовал этот кусок:

IPAddress addr = System.Net.IPAddress.Parse( HttpContext.Connection.RemoteIpAddress.ToString() );
if (System.Net.IPAddress.IsLoopback(addr) )
{
    //do something
}
1
ответ дан equinoxe 5 May 2018 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: