ASP.NET - Создание вашей собственной системы маршрутизации

StackOverflow https://stackoverflow.com/questions/22869

  •  09-06-2019
  •  | 
  •  

Вопрос

В недавнем проекте я создал свой собственный фреймворк MVC на PHP.Одной из вещей, которые я внедрил, была система маршрутизации.Я использовал mod_rewrite от Apache для отправки всех запросов в index.php, а затем проанализировал URI, чтобы извлечь информацию и направить запрос.

Сейчас я занимаюсь ASP.NET, и мне интересно, могу ли я выполнить что-то подобное.Есть ли способ перенаправить все запросы (аналогично тому, как это делает WordPress) на одну страницу, где выполняется централизованная обработка маршрута?Я знаю о фреймворке MVC для ASP.NET, но я хотел бы попробовать это сам, поскольку я возлюсь и учусь.

Редактировать:Кстати, мой хостинг-провайдер работает под управлением IIS 6

Это было полезно?

Решение

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

Механизм маршрутизации, который поддерживает фреймворк ASP.NET MVC, будет работать с традиционным фреймворком ASP.NET.Вы можете воспользоваться помощью таблица и назначение маршрутов, так же, как и в приложении ASP.NET в MVC.Вы просто не получаете часть MVC на традиционных ASP.NET сайтах.Это было огромным улучшением для фреймворка ASP.NET, и было здорово видеть, как они повторно используют этот код и заставляют его работать в обоих фреймворках.Если вы хотите узнать больше об этом, загляните в Scottgu's Публикация и прокрутите вниз до улучшений маршрутизации URL-адресов.Также здесь есть ссылка о том, как использовать System.Web.Routing в WebForms, автор Фил Хаак.

Теперь, если вы все еще хотите написать что-то свое.Вам нужно будет изучить конвейер ASP.NET HTTP и способы реализации IHttpМодуль и тот IHttpHandler - обработчик интерфейсы для создания вашего собственного класса HttpModule или HttpHandler для обработки вашей маршрутизации.Эти интерфейсы являются ключевыми при написании вашего собственного механизма маршрутизации.Чтобы помочь представить эти интерфейсы в рабочем примере, я не мог бы рекомендовать это Статья в MSDN достаточно.В нем показано, как работать с любым интерфейсом, и объясняются различия при создании собственного механизма маршрутизации / перезаписи URL.

Теперь, если вы поймете, что для вас это может оказаться чересчур.Существуют сторонние библиотеки, которые вы можете использовать у людей, которые уже написали механизм маршрутизации / перезаписи URL-адресов в .NET.Вот вопрос, который , как я видел , не так давно задавали "Для чего вы используете программу перезаписи URL ASP.Net?" прямо здесь, на SO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top