web-dev-qa-db-ja.com

URLにエンコードされたアンパサンドが含まれていると、MVC WEB APIルーティングが失敗する

私が私のWebサービスを呼び出すと、魔女は2つのパラメーターを受け取ります:

潜在的に危険な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 }
);

コントローラーメソッド:

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

私がAPIを呼び出すとき:

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

潜在的に危険なRequest.Path値がクライアント(&)から検出されました。

これを行う:

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

正常に動作します。

ルーティングデコードの問題を解決するにはどうすればよいですか?

20
espvar

スコット・ハンセルマン これについてブログに書いた 。 web.configの<httpRuntime>ノードのrequestPathInvalidCharactersプロパティを確認することをお勧めします。

個人的には、uri部分でそのような文字を避け、それらの値をクエリ文字列パラメーターとして単純に配置します。

30
Darin Dimitrov