当URL包含编码符号的MVC Web API路由失败(MVC WEB API routing fai

2019-07-18 07:15发布

当我打电话给我的web服务女巫有两个参数,我得到:

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

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的值。

这样做:

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

工作良好。

我如何解决路由解码问题?

Answer 1:

斯科特Hanselman的博客上讲述这个 。 您可能要检查requestPathInvalidCharacters的财产<httpRuntime>节点在你的web.config。

我个人避免在URI部分这样的字符和简单地把这些值作为查询字符串参数。



文章来源: MVC WEB API routing fails when url contains encoded ampersand