3

我有路线:

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} 参数就可以了。

我应该怎么做才能使它起作用?

4

1 回答 1

3

我应该怎么做才能使它起作用?

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

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

您可以阅读following blog postScott Hanselmann 的文章,其中介绍了在 url 的路径部分使用此类值的困难。

我引用他的结论:

在为在请求路径中获得疯狂的东西所做的所有努力之后,值得一提的是,简单地将值保留为查询字符串的一部分(还记得本文开头的 WAY 吗?)更容易、更清洁、更灵活,而且更多安全的。

于 2013-06-05T11:38:17.510 回答