我们正在迁移到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}");
});
}
您必须从“路线属性”中删除该操作,该操作才能正常工作。
[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)
{
}
}