Шевроны в маршрутизации URL с помощью WebForms 3.5
-
06-07-2019 - |
Вопрос
Я только что обновил свою старую систему URL-адресов, основанную на сопоставлении с использованием подстановочных знаков, для использования System.Web.Routing
. Раньше я мог запросить URL /Service/GetItems<My.Full.Item.Type>
, который был проанализирован на другой стороне и возвращал именно то, что вы ожидали. Это было опрятно.
Теперь при включенной маршрутизации любой запрос с < или > в нем возвращается содержимое '/'
вместо страницы, которую я хотел. Даже если я закодирую их в% 3C и% 3E, меня перенаправят в корень независимо от того, что говорится в остальной части URL.
Мне бы понравилось, если бы мне не приходилось проходить через мое приложение, меняя все экземпляры интуитивных общих ссылок на временное решение, которое я придумала: /Service/GetItems/T=My.Full.Item.Type
. Не так приятно.
Спасибо всем!
Решение
Похоже, вы столкнулись с проблемой ограниченных символов в URL. Обратите внимание, что это не имеет ничего общего с маршрутизацией, но с ASP.NET блокирует определенные символы в URL.
Почему раньше это работало с перезаписью URL? Скорее всего, потому что URL был переписан так, чтобы эти символы были в строке запроса перед его передачей в ASP.NET.
Есть некоторые вещи, которые вы можете попробовать. Р>
В настройках реестра разрешены запрещенные символы http://support.microsoft.com/kb/820129. р>
Вот еще одна статья поддержки: http: // support.microsoft.com/default.aspx?scid=kb;EN-US;826437 р>
В ASP.NET 4 мы планируем значительно упростить настройку.