Назад | Перейти на главную страницу

Базовый URL-адрес перенаправления ASP переписывается IIS

Я пытаюсь отладить, как мне кажется, проблему перезаписи IIS.

Я размещаю несколько сайтов на одном сервере IIS, который за кулисами действует как прокси для хостов Kestrel. Все работает правильно, и у меня не было никаких проблем.

Проблема, с которой я сталкиваюсь, - это когда какой-либо из моих сайтов return Redirect("http://www.someotherurl.com/") через ASP.NET MVC базовый URL-адрес всегда переписывается на URL-адрес моего сайта - это верно, даже если URL-адрес является полностью внешним по отношению к моему URL-адресу.

Если я запускаю сайт отдельно, а не в прокси-сервере IIS, перенаправление работает так, как я ожидал, поэтому я знаю, что это что-то внутри IIS.

Что касается правил, у меня сейчас вообще нет исходящих правил. Для входящих правил у меня есть (для каждого из моих сайтов):

  1. Правило перенаправления HTTP на HTTPS.
  2. Правило перезаписи, которое берет URL-адреса и перезаписывает URL-адрес на http://127.0.0.1:port чтобы сервисы, размещенные на собственном хостинге, могли должным образом обработать запрос. Для каждого сайта существует отдельное правило.

Я очень озадачен на этом этапе, потому что я не вижу другого способа перенаправления, который не попадал бы на фактический URL-адрес, который я предоставляю, но IIS, похоже, делает что-то загадочное.

Больше информации

  1. Запрос приходит на www.example.net/Documents.
  2. Правило заменяет URL-адрес на 127.0.0.1:port/Documents на основе входящего URL-адреса.
  3. Конечная точка обрабатывает запрос.
  4. Отправлен ответ перенаправления.
  5. Базовый URL конвертируется обратно в www.example.com несмотря ни на что, даже если перенаправление выполняется на другой домен. Я считаю, что проблема именно здесь. Похоже, что IIS делает это по умолчанию. Однако я не уверен.

Нашел ответ и хотел опубликовать здесь, если кто-то еще столкнется с проблемой.

За https://stackoverflow.com/a/23600821/132528:

Может ли быть задействована маршрутизация запросов приложений? Посмотрите на IIS -> Компьютер или сайт -> Кэш маршрутизации запросов приложений -> Настройки прокси-сервера и снимите флажок «Обратить перезапись хоста в заголовках ответов». Если вы сделаете это на уровне компьютера, это повлияет на все сайты. Если вы сделаете это на определенном сайте, это повлияет только на этот сайт, а другие сайты в поле не будут затронуты.