HttpRequestMessage.IsLocal() false на одном сайте true на другом на том же сервере

Я запускаю приложение веб-API asp.net на сервере Windows. У меня есть 2 сайта с разными ip-адресами. Когда приложение развернуто на одном из сайтов, IsLocal имеет значение true, а при развертывании на другом сайте — false.

Проверка исходного кода сводится к следующему:

    [DllImport("aspnet_state.exe", CharSet=CharSet.Ansi)]
    internal static extern void STWNDGetLocalAddress(IntPtr tracker, StringBuilder buf);

Это метод, который возвращает локальный адрес, почему второй IP-адрес недействителен? Конфигурация сети выглядит так (IP-адрес .79 — это тот, для которого IsLocal возвращает false)

введите здесь описание изображения

Как заставить IsLocal учитывать второй IP-адрес?


person Erik Sundström    schedule 30.01.2014    source источник
comment
Хотя ответа на этот вопрос я не нашел. Существует обходной путь для удовлетворения ваших потребностей @strathweb.com/2013/01/adding-request-islocal-to-asp-net-web-api   -  person RCkumar    schedule 07.02.2014
comment
Это выглядит аккуратно, но это решение также использует STWNDGetLocalAddress, поэтому я предполагаю, что оно не будет доставлять адрес .79.   -  person Erik Sundström    schedule 10.02.2014
comment
Вы посмотрели @stackoverflow.com/questions/11849501/. Просто предложение. Если уже проходили, пропустите   -  person RCkumar    schedule 10.02.2014


Ответы (1)


IsLocal возвращает true в любом из трех условий:

  • Запрос пришел с 127.0.0.1
  • Запрос пришел с локального хоста
  • Запрос пришел с того же IP-адреса, что и IP-адрес сервера.

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

person christofr    schedule 30.01.2014
comment
Это не локальный хост и не 127.0.0.1. Но ip-адрес назначается адптеру на сервере. Но почему не локально. Я добавлю немного ведения журнала, чтобы получить больше контекста. Если сервер имеет более одного ip-адреса, какой ip-адрес сервера? - person Erik Sundström; 30.01.2014