Разница между двумя IgnoreRoute
звонками из исходного сообщения заключается в следующем:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Это будет соответствовать запросам к ресурсам, таким как / ScriptManager.axd или / Foo.axd / bar / baz.aspx , но не будет соответствовать запросу на любой ресурс *. axd ниже корня вашего сайта, например / foo / bar / Baz.axd .
routes.IgnoreRoute("{*allaxd}", new {allaxd = @".*\.axd(/.*)?"});
Этот вызов использует регулярное выражение для сопоставления запроса с любым ресурсом *. Axd на любом уровне вашего сайта, например, / foo / bar / Baz.axd . Поэтому этот вызов предпочтительнее первого, если вы ссылаетесь на любые ресурсы axd, расположенные ниже корня вашего сайта.
Если вы разобьете регулярное выражение, .*
в начале будет соответствовать 0 или более символам. \.axd
будет соответствовать буквенной строке ".axd"
, а (/.*)?
будет дополнительно совпадать с косой чертой, за которой следует 0 или более символов.
*
в шаблоне URL {*allaxd}
гарантирует, что будет просканирован весь путь, а не только один участок пути. allaxd
- это просто метка произвольного обозначения, присваиваемая совпадающей части пути, которая в этом случае будет всей траекторией. Этот метод эффективного игнорирования маршрутов позволяет игнорировать маршруты для определенных расширений файлов. Вы можете легко скопировать этот вызов и внести несколько изменений, чтобы игнорировать маршруты для * .aspx, * .asmx и т. Д. И т. Д.
Для получения подробной документации по маршрутизации я настоятельно рекомендую следующую страницу MSDN .