{*url}
будет соответствовать всему пути, а не одному сегменту. Однако, поскольку он соответствует всему пути, вы не можете сопоставить идентификатор партнера в конце. Маршрут будет соответствовать каждому запросу. Вы можете обойти это, добавив ограничение маршрута, чтобы проверить, что url
имеет идентификатор партнера в конце:
routes.MapRoute(
"WithAffiliate",
"{*url}",
new { controller="Home", action="LogCookieAndRedirect" },
new { url = @"/x[0-9]+$" }
);
В этом случае вашему действию потребуется проанализировать идентификатор партнера по самому параметру url
. Если у вас есть возможность изменить структуру URL, можно было бы сопоставить идентификатор, если бы он был в начале пути:
routes.MapRoute(
"WithAffiliate",
"x{affiliateExternalId}/{*url}",
new { controller="Home", action="LogCookieAndRedirect" }
);