当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部分中使用这些字符,只需将这些值作为查询字符串参数。