带有urlEncoded部分的Web Api路由

时间:2013-06-05 11:36:18

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

我有路线:

config.Routes.MapHttpRoute(
    name: "RestApi",
    routeTemplate: "rest/{storage}/{controller}/{id}/{action}",
    defaults: new
    {
        id = RouteParameter.Optional,
        action = "Index"
    }

{id}参数可以是URI本身,我对其进行编码。例如,路线可以是: 的 /rest/main/nodes/http%3A%2F%2Fwww.company.com%2Fns%2FGeo%23United_States/rdf

但这种方式错了,这不行。使用简单的{id}参数即可。

我应该怎样做才能使它有效?

1 个答案:

答案 0 :(得分:2)

  

我应该怎样做才能使它有效?

如果您打算向服务器发送任意字符,请使用查询字符串参数:

/rest/main/nodes/rdf?url=http%3A%2F%2Fwww.company.com%2Fns%2FGeo%23United_States

您可以阅读Scott Hanselmann撰写的following blog post,其中涵盖了在网址路径部分使用此类值的困难。

我引用他的结论:

  

在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样   值得一提的是,只需将值保留为Query的一部分   字符串(记得在这篇文章的开头回答?)更容易,   更清洁,更灵活,更安全。

相关问题