Если вы все еще хотите иметь возможность доступа к значению color-id через Querystring, вам следует посмотреть Перезапись .Это может произойти из-за устаревшего кода, который вы не можете изменить, или из-за других форм взаимодействия со сторонним кодом.Преимущество или Rewriting
заключается в том, что код, который заканчивается выполнением, не знает, как URL-адрес выглядел до того, как был переписан, и он может продолжать работать, как если бы был параметр Querystring с именем ColorID
.
* 1006.* В простейшей форме вам нужно вызвать метод Rewrite объекта HttpContext, который вызовет новый внутренний запрос, который выполняет код, соответствующий этому URL, и пользователь ничего не заметит.Одним из предостережений этого может быть то, что ваш унаследованный код не знает, как отображать правильные ссылки в меню и прочем, поэтому вы будете иметь URL-адреса, подобные
?ColorID=Red
, где они должны были быть просто
Red
.
В IIS 7 и выше есть встроенный фильтр, в котором вы можете писать свои правила и шаблоны, поэтому вам не нужно писать собственный код, который соответствует входящим запросам и вызовам HttpContext.Rewrite
.Подробнее об этом здесь на MSDN.
Теперь, Маршрутизация - это совсем другое.Это функция Asp.net, которая не работает поверх существующего унаследованного кода, но должна использоваться вместе с ней.Это означает, что исполняемый код должен знать, что запрос направлен на него.Это, конечно, имеет много преимуществ, и если вы пишете новую систему, то я бы определенно рекомендовал использовать Routing over Rewriting .Здесь есть хорошая статья о различиях, и некоторые вопросы SO также охватывают эту тему: