Программно спросить страницу, в глобальном asax, если она помечена как устаревшая?

Я хотел бы пометить некоторые страницы на моем сайте, которые в настоящее время находятся в свободном доступе, как "устаревшие", и перейти к этому в моем global.asax и перенаправить клиента на другую страницу.

Тогда я получу, чтобы сайт уведомил команду разработчиков, что кто-то пытался попасть на эту страницу.

Можете ли вы получить доступ к информации о типе страницы из любого места в мире?

12.10.2009 21:35:48
2 ОТВЕТА
РЕШЕНИЕ

При условии, что у вас есть следующая страница:

[Obsolete]
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    { }
}

В global.asax вы можете сделать это:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    if (!(this.Context.Handler is System.Web.UI.Page))
    {
        return;
    }

    var isPageObsolete = this.Context.Handler
            .GetType()
            .BaseType
            .GetCustomAttributes(typeof(ObsoleteAttribute), true)
            .Length > 0;
    if (isPageObsolete)
    {
        Response.Redirect("http://www.google.com");
    }
}
2
12.10.2009 22:01:12
просто, элегантно, красиво. Не знал, что «обработчиком» была страница. Спасибо, Дарин.
DevelopingChris 13.10.2009 13:44:02

Я думаю, что ответ Дарина весьма креативный. Я предлагаю другую точку зрения. Метод, обсужденный до сих пор, маркирует страницу на странице. Как насчет пометки страницы, скажем, в конфиге или другом XML-файле, подобном этому.

<obsoletePages>
  <page path="/page123.aspx />
  <page path="/pagexyz.aspx />
</obsoletePages>

В global.asax перехватите запрос в Application_BeginRequest () , если страница запроса найдена в файле конфигурации, выполните перенаправление.

0
13.10.2009 00:06:12
Я изучил этот маршрут лично, как более простое решение для реализации. Сложность в том, что трудно понять, когда вы пытаетесь заставить страницу работать, какого черта вас перенаправляют. Делая обслуживание устаревшего больше путаницы. Я думаю также отметить дату, когда что-то устарело, и перед каждым выпуском найти вещи, которые устарели в производстве на 90 дней или что-то еще, и обрезать их.
DevelopingChris 13.10.2009 13:42:59
Управление состоянием отдельных страниц устарело, это не так утомительно, как управление из одной точки. В любом случае, вы должны знать лучше, понимая природу вашего приложения и протокола разработки. Удачи!
o.k.w 13.10.2009 14:35:48