Как реализовать ручную подмену URL (URL rewriting) в приложении ASP.NET - CodeHelper

Как реализовать ручную подмену URL (URL rewriting) в приложении ASP.NET

1

Как сделать URL rewriting в коде ASP.NET без применения сторонних библиотек и ISAPI-фильтров? Интересуют не аспекты и тонкости реализации для законченного приложения, а просто рабочий пример такого кода.

Лучший ответ:

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, можно подписаться на событие начала обработки запроса и выполнить аналогичную подмену.

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.