如何在ASP.Net WebApi中使用'/';在您的字符串参数中
本文关键字:参数 字符串 ASP Net WebApi | 更新日期: 2024-10-18 10:37:15
我有一个C#WebApi 4项目,我试图在其中包含一个字符为"/"的字符串参数。例如,我在参数中传递一个路径:
http://localhost/api/MyController/mypath/testing
我希望MyController中Get方法中的id参数填充"mypath/testing"。然而,看起来路由应该是两个参数,并且找不到去哪里,所以它错误地返回。
我想我需要更改默认路线。目前在WebApiConfig类中,它被设置为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但我不确定该使用什么类型的模式。有人有什么建议吗?
编辑:如果我将URL更改为http://localhost/api/MyController?id=mypath/testing并将路线修改为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}?{id}",
defaults: new { id = RouteParameter.Optional }
);
然后这个参数就变了。但是,我有一个要求,即不更改URL模式,也不更改URL编码。
'/'在url中是保留的,如果你想用它作为参数,你应该对它进行编码。你需要这样编码:%2F
。
您可以在此链接中检查所有需要编码的符号