MVC5 перенаправление на стороне сервера с использованием filterContext - PullRequest
0 голосов
/ 22 мая 2018

У меня есть таблица с URL-перенаправлениями, и ранее я использовал HttpModule подход для запроса БД и обработки перенаправлений, если таковые обнаружены.Однако теперь я хочу изменить эту функциональность в ActionFilter по двум причинам:

  1. HttpModule обрабатывает все запросы, в то время как мне нужны перенаправления только для определенных типов контента.Во всех других случаях это приводит к бессмысленному запросу базы данных.
  2. Мне нужна дополнительная функция - использовать 301 перенаправление на стороне клиента при определенных условиях и по умолчанию перенаправление на стороне сервера для остальных.

В настоящее время в моем HttpModule я использую HttpContext.RewritePath для реализации перенаправления на стороне сервера .У меня вопрос, как я могу достичь того же результата в ActionFilter.

Чтобы уточнить перенаправление на стороне сервера : я хочу иметь доступ к одному и тому же контенту по двум различным ссылкам.Если courses/programming-basics/details (словесный URL) перенаправлен на /course/{id}/details (реальный путь действия), я хочу иметь возможность использовать словесный URL для доступа к этому контенту.

В настоящее время, используя ActionExecutingContext Яиспользуя

filterContext.Result = new RedirectResult(url)

, что приводит к 301 на стороне клиента .

Уточнение : Я хочу, чтобы мой контент был доступен по старым URL-адресам.Следование приведенному выше примеру Это приводит к одной странице, которая представляет идентичный контент с двумя действительными URL: courses/programming-basics/details и `course / {id} / details.Возможно, я неправильно использую перенаправления, но так мне удалось сформулировать вопрос.

1 Ответ

0 голосов
/ 22 мая 2018

Я нашел решение моей проблемы здесь, как предложено @Andrei.Этой строки было достаточно:

filterContext.HttpContext.Server.TransferRequest(url);

Это вернуло правильное содержание и сохранило старый, многословный URL.Именно то, что мне было нужно.

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