Я имею дело с этим кодом в сценарии Веб-форм:
public static void RegisterRoutes(RouteCollection routes)
{
Route r = new Route("{*url}", new MyRouteHandler());
routes.Add(r);
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
}
Во-первых, кто-либо может сказать мне, где определение {*pathInfo}? http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns действительно не определяет его. Делает:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Соответствие
/c/xyz.axd and
/b/c/xyz.axd and
/a/b/c/xyz.axd
Принимая во внимание, что
routes.IgnoreRoute("{resource}.axd");
Только соответствия
/xyz.axd
Во-вторых, в:
{*url}
Что делает * средний? И что в целом означает выражение. Есть ли где-нибудь, это ясно объяснено?
В-третьих, существует ли особый порядок, я должен добавить эти выражения для корректного игнорирования маршрутов? Я знаю {*url} некоторое вместилище, должен IgnoreRoutes приезжать прежде или после него, например,
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
Route r = new Route("{*url}", new MyRouteHandler());
routes.Add(r);
pathinfo - это просто ярлык для корзины. Так, например, {* pathinfo}
говорит, что помещайте все после {resource} .axd /
в pathinfo.
Маршруты выполняются в том порядке, в котором вы помещаете их в таблицу маршрутов, поэтому, если ваш самый первый маршрут является перехватом, все остальные никогда не будут выполняться.