路由参数包含部分路由

问题描述 投票:0回答:1

我有一条看起来像这样的路线:

/foo/{identifier}/bar/

我已经配置了这样的路线:

httpConfiguration.Routes.MapHttpRoute("Foo1", "foo/{identifier}/bar/", new
{
    controller = "Foo",
    action = nameof(Foo.Bar)
});

我还配置了第二条路由,它路由到同一个控制器但方法不同:

httpConfiguration.Routes.MapHttpRoute("Foo2", "foo/{*identifier}", new
{
    controller = "Foo",
    identifier = RouteParameter.Optional
});

我的控制器看起来像这样:

[HttpPost]
[ScopeAuthorize(SomeScope)]
public HttpResponseMessage Bar(string identifier, [FromBody] SomeDto dto)
{
    Console.WriteLine(identifier);
}

如果我使用参数

identifier = hello
和正文中的一些正确数据向该路由发送 POST 请求,我希望
identifier
的值是
hello
。然而,价值是
hello/bar
。我在这里错过了什么?

c# asp.net url-routing asp.net-mvc-routing
1个回答
0
投票

问题出在第二条路线中的 catch-all 参数。当我删除它时,路由按预期工作。

所以,路线

foo/{*identifier}
变成了
foo/{identifier}
.

© www.soinside.com 2019 - 2024. All rights reserved.