如何使用' /'处理ASP.Net WebApi路由中的路由?在你的字符串参数中

时间:2015-03-05 17:15:21

标签: c# asp.net-mvc asp.net-web-api asp.net-web-api-routing

我有一个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 }
);

但我不确定使用什么类型的模式。有没有人有任何建议?

编辑:如果我将网址更改为http://localhost/api/MyController?id=mypath/testing并修改路线为:

config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}?{id}",
     defaults: new { id = RouteParameter.Optional }
);

然后参数确实如此。但是,我要求不更改URL模式,也不要更改URL编码。

1 个答案:

答案 0 :(得分:1)

' /'保留在URL中,如果要将其用作参数,则应对其进行编码。您需要对其进行编码:%2F

您可以在此link

中查看所有需要编码的符号