0

我有WebApi带字符串参数的方法:

public IEnumerable<Foo> Get(string stuff)
{
  //do stuff
}

路线:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{stuff}",
    defaults: new { stuff= RouteParameter.Optional }
);

如果我这样调用方法: http://localhost:13892/api/servce?stuff=https://mysite.com/bla?g=1 - 一切都好

但如果我去 http://localhost:13892/api/servce/https://mysite.com/bla?g=1 - 得到错误: A potentially dangerous Request.Path value was detected from the client (:).

知道如何解决该错误,但我想知道为什么会这样?为什么在第一种情况下我没有收到该错误

4

1 回答 1

1

一个简单的解释是,参数中包含的字符 : 不允许作为 URL 的一部分,但在查询字符串中使用是完全合法的

请注意,这可能是从客户端检测到的潜在危险 Request.Path 值的重复 (*)

于 2014-03-04T13:15:20.823 回答