Маршрутизация MVC WEB API терпит неудачу, когда url содержит закодированные амперсанды
Когда я вызываю свой веб-сервис, witch принимает два параметра:
Потенциально опасное значение Request.Path было обнаружено у клиента (&).
Routeconfig:
config.Routes.MapHttpRoute(
name: "PropertiesSearch",
routeTemplate: "api/property/Search/{category}/{query}",
defaults: new { controller = "Property", action = "Search", category = "common", query = string.Empty }
);
Controllermethod:
[HttpGet]
public SearchResult Search(string category, string query)
{
}
Когда я вызываю api с помощью:
/апи/недвижимость/поиск/дома/Areaid% 3D20339% 26areaId% 3D20015
Потенциально опасное значение Request.Path было обнаружено у клиента (&).
Выполнение этого действия:
/апи/недвижимость/поиск/дома/? = Запрос Areaid% 3D20339% 26areaId% 3D20015
отлично работает.
Как решить проблему декодирования маршрутизации?
Ответы
Ответ 1
Скотт Гензельман рассказал об этом. Возможно, вы захотите проверить свойство requestPathInvalidCharacters
<httpRuntime>
node в файле web.config.
Лично я бы избегал таких символов в части uri и просто помещал эти значения в параметры строки запроса.