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

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

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

РЕДАКТИРОВАТЬ: Кстати, мой хостинг-провайдер работает IIS 6

22.08.2008 16:58:07
1 ОТВЕТ
РЕШЕНИЕ

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

Механизм маршрутизации, который обеспечивает ASP.NET MVC Framework, будет работать с традиционным ASP.NET Framework. Вы можете воспользоваться преимуществами RouteTable и назначить маршруты, как в приложении ASP.NET MVC. Вы просто не получаете часть MVC на традиционных сайтах ASP.NET. Это было огромное улучшение для ASP.NET Framework, и было здорово видеть, как они повторно используют этот код и заставляют его работать в обеих платформах. Если вы хотите узнать больше об этом, проверьте ScottGu в пост и прокрутите вниз URL маршрутизации Улучшений. Также здесь есть ссылка на то, как использовать System.Web.Routing в WebForms от Phil Haack.

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

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

6
23.05.2017 12:24:51
Отличный ответ ... Мне также понравились эти статьи - chriscavanagh.wordpress.com/2008/03/11/… , blogs.msdn.com/b/mikeormond/archive/2008/05/14/…
nikib3ro 14.02.2011 22:25:39