我有路线:
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}参数即可。
我应该怎样做才能使它有效?
答案 0 :(得分:2)
我应该怎样做才能使它有效?
如果您打算向服务器发送任意字符,请使用查询字符串参数:
/rest/main/nodes/rdf?url=http%3A%2F%2Fwww.company.com%2Fns%2FGeo%23United_States
您可以阅读Scott Hanselmann撰写的following blog post
,其中涵盖了在网址路径部分使用此类值的困难。
我引用他的结论:
在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样 值得一提的是,只需将值保留为Query的一部分 字符串(记得在这篇文章的开头回答?)更容易, 更清洁,更灵活,更安全。