2009-11-17 2 views
3

В моем исследовании я нашел 2 способа их выполнения.ASP.NET Friendly URLs

Обе необходимые модификации процедуры Application_BeginRequest в Global.Asax, где вы будете запускать код для фактического сопоставления URL (мой был с представлением базы данных, содержащим все дружественные URL-адреса и их отображаемые «реальные» URL-адреса) , Теперь уловка заключается в том, чтобы ваши запросы выполнялись через движок .NET без расширения aspx. 2 способа, которые я нашел, это:

  1. Запустите все через механизм .NET с помощью сопоставления расширений приложений подстановочных знаков.

  2. Создайте пользовательскую страницу ошибки aspx и сообщите IIS, чтобы отправить 404 на нее.

Теперь вот мой вопрос:

Есть ли какой-либо причине один из них лучше делать, чем другие?

Когда вы играете на моем Dev-сервере, первое, что я заметил около # 1, - это запутанные расширения на главной странице, а не огромная сделка, но я так привык к подключению к моим сайтам. Еще одна проблема, с которой я столкнулся с №1, заключается в том, что хотя моя хостинговая компания снисходительна ко мне (поскольку я являюсь их крупнейшим клиентом) и буду рассматривать такие вещи, как это, они опасаются любых рисков безопасности, которые она может присутствовать.

`# 2 отлично работает, но у меня просто такое чувство, что оно не так эффективно, как # 1. Я просто бредил?

Благодаря

ответ

3

Я использовал # 2 в прошлом тоже.

Это более эффективно, потому что в отличие от отображения подстановочные, движок ASP.NET не нуждается в «процесс» запросов для всех дополнительных ресурсов, таких как файлы изображений, статический HTML, CSS, JavaScript и т.д.

В качестве альтернативы, если вы не против расширения .aspx в своих URL-адресах, которые вы могли бы использовать: http://myweb/app/idx.aspx/products/1 - это прекрасно работает.

Сказав это, реальное решение использует IIS 7, где время выполнения ASP.NET является полностью полноценной частью стека модулей HTTP IIS.

+0

Спасибо, это имеет смысл не иметь все другие файлы ресурсов, проходящие через движок. Я изначально имел расширение aspx в своих URL-адресах, но хотел их очистить. Мой сайт находится на IIS 6, но я собираюсь больше посмотреть в материал IIS 7. –

2

Если у вас есть последняя версия IIS есть переписан модуль для него - см here. Если нет, есть свободные сторонние двоичные файлы, которые вы можете использовать со старым IIS (т.е. версия 6). Я использовал тот, который читает правила перезаписи из файла .ini и поддерживает регулярное выражение, но я не могу вспомнить его имя извините (возможно, this) , Я бы порекомендовал это, потратив это на 404 страницу.

1

Вы проверили ASP .Net MVC Framework? Используя эту структуру, все ваши URL-адреса автоматически сопоставляются с контроллерами, которые могут выполнять любое требуемое действие (включая перенаправление на другие URL-адреса или контроллеры). Вы также можете настроить пользовательские маршруты с помощью настраиваемых параметров. Если вы еще этого не видели, возможно, это будет стоить того взгляда.

1

Вы должны сопоставить все запросы с помощью механизма ASP.NET. Способ обработки запросов IIS заключается в расширении файла. По умолчанию он обрабатывает только расширения .aspx, .ashx и т. Д., Которые предназначены только для обработки ASP.NET. Причина в том, что он добавляет дополнительные затраты на обработку запроса. Я написал, как это сделать с IIS 6 некоторое время назад, http://professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard-Extensions-in-ASP.NET.aspx.

Вы правы в своем отображении из базы данных. RegEx переписывание, как используется из коробки в MVC. Это связано с тем, что он более или менее заставляет вас помещать первичный ключ в URL-адрес и не имеет возможности сопоставлять символы, которые не разрешены в URL-адресах, например '.

Смежные вопросы