如何在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编码。

如何在ASP.Net WebApi中使用'/';在您的字符串参数中

'/'在url中是保留的,如果你想用它作为参数,你应该对它进行编码。你需要这样编码:%2F

您可以在此链接中检查所有需要编码的符号