ASP.Net Core替代令牌替换模板属性路由

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

我们正在迁移到ASP.Net Core 3.0。我有一个带有令牌替换属性路由的基本控制器。我有两个端点的成员控制器。 GetDetails(无路由替代)端点工作正常。

我正在尝试使用“ getstate”覆盖GetStateByIp端点的动作名称。但是,它正在改变整个路线,而不是覆盖动作。

是否可以执行我尝试的属性路由?我们有200多个动作,并且仅使用自定义动作名称覆盖了少数动作。

请参阅下面的代码以供参考。

[Route("api/[controller]/[action]")]
[ApiController]
public abstract class BaseApiController : Controller
{

}

public class MembersController : BaseApiController
{
    //route -> /api/members/getdetails (expected, working)
    public ActionResult GetDetails()
    {
    }

    //route -> /api/members/getstate (expected)
    //route -> /getstate (actual)
    [HttpPost("getstate")]
    public ActionResult GetStateByIp(IpRequestViewModel ip)
    {
    }
}

在Startup.cs中

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapControllers();

        endpoints.MapAreaControllerRoute(
            name: "xxxxx",
            "xxxxx", pattern:
            "xxxxx/{controller}/{action}");
    });
}
c# asp.net-core routing asp.net-core-webapi attributerouting
1个回答
0
投票

您必须从“路线属性”中删除该操作,该操作才能正常工作。

[Route("api/[controller]")]
[ApiController]
public abstract class BaseApiController : Controller
{

}

public class MembersController : BaseApiController
{
    //route -> /api/members/getdetails (expected, working)
    public ActionResult GetDetails()
    {
    }

    //route -> /api/members/getstate (actual)        
    [HttpPost("getstate")]
    public ActionResult GetStateByIp(IpRequestViewModel ip)
    {
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.