当使用ASP.NET Core的控制器路由属性继承和抽象控制器操作时,可能会遇到"AmbiguousActionException"异常。这是由于在路由属性继承中,子类控制器中的操作方法与父类控制器中的操作方法具有相同的路由模板,导致模糊匹配。
为了解决这个问题,可以使用以下两种方法:
public abstract class BaseController : Controller
{
[NonAction]
public IActionResult CommonAction()
{
// 共同的操作逻辑
}
}
public class ChildController : BaseController
{
public IActionResult Action1()
{
CommonAction();
// 子类操作逻辑1
}
public IActionResult Action2()
{
CommonAction();
// 子类操作逻辑2
}
}
public abstract class BaseController : Controller
{
[Route("base/action")]
public IActionResult CommonAction()
{
// 共同的操作逻辑
}
}
public class ChildController : BaseController
{
[Route("child/action1")]
public IActionResult Action1()
{
CommonAction();
// 子类操作逻辑1
}
[Route("child/action2")]
public IActionResult Action2()
{
CommonAction();
// 子类操作逻辑2
}
}
通过以上两种方法,可以解决ASP.NET Core的控制器路由属性继承和抽象控制器操作中遇到的"AmbiguousActionException"异常。
上一篇:ASP.NET Core的空问题