当url包含编码的&符号时,MVC WEB API路由失败
当我打电话给我的webservice时,我会得到两个参数:
从客户端(&)检测到潜在危险的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时:
/ API /属性/搜索/家庭/ areaID表示%3D20339%26areaId%3D20015
从客户端(&)检测到潜在危险的Request.Path值。
这样做:
/ API /属性/搜索/家庭/?查询= areaID表示%3D20339%26areaId%3D20015
工作良好。
如何解决路由解码问题?
Scott Hanselman 在博客中写到这一点 。 您可能希望检查web.config中
节点的requestPathInvalidCharacters
属性。
我个人会避免在uri部分中使用这些字符,只需将这些值作为查询字符串参数。