C# 如何指示控制器中的方法不是动作方法?

C# 如何指示控制器中的方法不是动作方法?,c#,asp.net-core,asp.net-core-mvc,asp.net-core-routing,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core Routing,我想使用一个页面特定的控制器。在该控制器中,我有一个动作方法和一组助手方法。在现实生活中,helper方法继承自BaseController,但为了简化操作,让我们假设我的controller类中只有一个helper方法,如下所示: [Route("/dev/test")] public class TestController : Controller { public IActionResult Get() { return UnprocessedEntityRes

我想使用一个页面特定的控制器。在该控制器中,我有一个动作方法和一组助手方法。在现实生活中,helper方法继承自
BaseController
,但为了简化操作,让我们假设我的controller类中只有一个helper方法,如下所示:

[Route("/dev/test")]
public class TestController : Controller {

    public IActionResult Get() {
        return UnprocessedEntityResult();
    }

    //Some helper method that I don't want to be considered an 
    //action method by the routing engine.
    public IActionResult UnprocessedEntityResult() {
        return StatusCode(StatusCodes.Status422UnprocessableEntity);
    }
}
我特别希望使用基于属性的路由,并且希望在级别指定基于属性的路由

鉴于上述编码的情况,当访问
/dev/test
路由时,将抛出
模糊usactionexception
,它将指示

AmbiguousActionException:匹配了多个操作。以下操作与路线数据匹配,并满足所有约束条件:

App.Dev.TestController.Get
App.Dev.TestController.UnprocessedEntityResult

如何告诉路由引擎
UnprocessedEntityResult()
不是操作方法?我假设一定有某个属性可以应用于该方法,但我一直无法找到它。

查找该属性

指示控制器方法不是操作方法

或者,您也可以使操作受到保护

[Route("/dev/test")]
public class TestController : Controller {
    [HttpGet]
    public IActionResult Get() {
        return UnprocessedEntityResult();
    }

    protected IActionResult UnprocessedEntityResult() {
        return StatusCode(StatusCodes.Status422UnprocessableEntity);
    }
}

它对派生类型可见,但不会混淆路由表

查找
非操作
属性。或者,您也可以使操作受到保护。它对派生类型可见,但不会混淆路由表
[Route("/dev/test")]
public class TestController : Controller {
    [HttpGet]
    public IActionResult Get() {
        return UnprocessedEntityResult();
    }

    protected IActionResult UnprocessedEntityResult() {
        return StatusCode(StatusCodes.Status422UnprocessableEntity);
    }
}