当url包含编码的&符号时,MVC WEB API路由失败

时间:2013-01-16 13:13:06

标签: c# asp.net-mvc rest asp.net-web-api asp.net-mvc-routing

当我打电话给我的网络服务时,我会得到两个参数:

从客户端(&)检测到潜在危险的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时:

  

/ API /属性/搜索/舍/ areaID表示%3D20339%26areaId%3D20015

从客户端(&)检测到潜在危险的Request.Path值。

这样做:

  

/ API /属性/搜索/舍/?查询= areaID表示%3D20339%26areaId%3D20015

工作正常。

如何解决路由解码问题?

1 个答案:

答案 0 :(得分:30)

Scott Hanselman blogged about this。您可能想要检查web.config中requestPathInvalidCharacters节点的<httpRuntime>属性。

我个人会避免在uri部分使用这些字符,只需将这些值作为查询字符串参数。