Как сделать URL rewriting в коде ASP.NET без применения сторонних библиотек и ISAPI-фильтров? Интересуют не аспекты и тонкости реализации для законченного приложения, а просто рабочий пример такого кода.
Как реализовать ручную подмену URL (URL rewriting) в приложении ASP.NET
1
Спросил
Лучший ответ:
1
Самый простой способ — подписаться на событие BeginRequest
в файле Global.asax и в теле обработчика выполнить все необходимые действия:
void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string currentLocation = context.Request.Path.ToLower();
string rewritedLocation = GetRewritedLocation(currentLocation); 1
if (currentLocation != rewritedLocation)
{
context.RewritePath(rewritedLocation); 2
}
}
1 — метод GetRewritedLocation
содержит логику подмены (код не приводится);
2 — собственно, подмена URL.
Поскольку код из Global.asax сложно тестировать и повторно использовать, то лучшим решением будет реализация той же логики в http-модуле (IHttpModule). В коде модуля, как и в коде Global.asax, можно подписаться на событие начала обработки запроса и выполнить аналогичную подмену.