web-dev-qa-db-fra.com

Le routage de l'API MVC WEB échoue lorsque l'URL contient une esperluette codée

Lorsque j'appelle ma webservice, la sorcière prend deux paramètres:

Une valeur Request.Path potentiellement dangereuse a été détectée par le client (&).

Routeconfig:

config.Routes.MapHttpRoute(
name: "PropertiesSearch",
routeTemplate: "api/property/Search/{category}/{query}",
defaults: new { controller = "Property", action = "Search", category = "common", query = string.Empty }
);

Méthode de contrôle:

[HttpGet]
public SearchResult Search(string category, string query)
{
}

Quand j'appelle l'api avec:

/ api/property/search/homes/areaId% 3D20339% 26areaId% 3D20015

Une valeur Request.Path potentiellement dangereuse a été détectée par le client (&).

Ce faisant:

/ api/property/search/homes /? query = areaId% 3D20339% 26areaId% 3D20015

fonctionne bien.

Comment résoudre le problème de décodage du routage?

20
espvar

Scott Hanselman blogué à ce sujet . Vous voudrez peut-être vérifier la propriété requestPathInvalidCharacters de la <httpRuntime> node dans votre web.config.

Personnellement, j'éviterais de tels caractères dans la partie uri et je mettrais simplement ces valeurs comme paramètres de chaîne de requête.

30
Darin Dimitrov