Как вернуть классическую страницу asp с другим именем, чем страница asp на сервере - PullRequest
1 голос
/ 06 января 2010

Можно ли вернуть веб-клиенту страницу с именем, отличным от оригинальной классической страницы asp, прочитанной из папки веб-серверов?

F.i. реальный пример, который я хотел бы реализовать: допустим, у меня есть классический asp под названием

calendar.asp

Если эта страница вызывается сегодня (6 января 2010 г.), страница, возвращаемая клиентскому веб-сайту, должна быть:

calendar-of-january-6-2010.asp

Если завтра будет вызвана та же страница, то возврат страницы на веб-сайт клиента должен быть:

calendar-of-january-7-2010.asp

Вы получаете картину. Основываясь на некоторой внутренней логике, верните определенную именованную классическую страницу asp веб-клиенту.

Спасибо за любой вклад, который вы можете предоставить.

ОБНОВЛЕНИЕ : Конкретные файлы дат в приведенном выше примере физически не существуют (или я мог бы использовать перенаправление). Я надеялся найти что-то вроде того, что я использую для возврата файла CSV:

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment; filename=export.csv"

Конечно, не то же самое, потому что это позволит клиентской браузерной строке запрашивать окно сохранения / открытия. Просто что-то похожее.

Ответы [ 3 ]

2 голосов
/ 06 января 2010

ОК, вы увидели ваши изменения, касающиеся ссылки на ежедневные календари.

Думайте об этом так:

  1. Создайте свои страницы так, чтобы ссылки были на понятные URL-адреса - /calendars/jan-01-2010.asp, /calendars/jan-02-2010.asp и т. Д.
  2. Сконфигурируйте IIS для использования настраиваемой ошибки 404 для / calendars / - чтобы каждый раз, когда клиент запрашивал страницу, которая не существует, ваш сервер запускал calendar.asp (вместо того, чтобы просто отправить обратно «Страница 404 не найдена» )
  3. Вот и все. Ваш клиент никогда не увидит URL «calendar.asp», потому что он никогда не запрашивает его. Все, что они делают, это следуют дружественным ссылкам, которые вы им даете. Это ваш сервер, который делает умный бит (перехватывает «недействительные» запросы и делает вид, что на этом URL действительно допустимая страница)

StackOverflow работает следующим образом - он использует ASP.NET MVC и механизм маршрутизации ASP.NET для перехвата этих дружелюбно выглядящих URL-адресов вопросов, поиска их в базе данных и возврата сгенерированной страницы пользователям (и поиска). Похоже, есть тысячи страниц с дружественным именем, хотя на самом деле все это происходит за кулисами.

0 голосов
/ 06 января 2010
  1. Вы можете просто перенаправить на новую страницу из calendar.asp. Когда пользователь запрашивает эту новую страницу, используйте перезапись URL, чтобы перезаписать обратно в calendar.asp внутри.

  2. Не очень хорошо - при первом запросе к calendar.asp сгенерировать реальную страницу (страницу с датой) (не забудьте удалить ее через 24 часа) и перенаправить на эту страницу.

0 голосов
/ 06 января 2010

Вы можете написать собственный фильтр ISAPI (C ++), чтобы контролировать, какой физический файл сопоставляется с URL. Для установки этого фильтра вам необходим административный доступ к блоку (ам) IIS, и если вы действительно хотите, чтобы ваши пользовательские URL-адреса имели расширение .asp, ваш фильтр должен учитывать это (поскольку фильтры ISAPI в основном выбираются на основе расширения IIS) , Проверьте это и это ссылка MSDN. Этот пример кода проекта содержит еще несколько указателей (он преобразовывает .chm в файлы .asp, легко проследить).

...