如何通过 HTTP 方法修改 NET API 控制器 class 的 属性

How to modify the property of a NET API controller class by HTTP methods

我想要一个 API,每当调用“add”get 方法时,整数都会增加 1。这是我的代码:

namespace test.Controllers
{
    [Route("api/[controller]")]
    public class testController : Controller
    {
        private int x;
        public testController(){
            x = 0;
        }

        [HttpGet]
        public JsonResult Get(){return Json(x);}
       

        [HttpGet("add")]
        public JsonResult Add(){
            x++;
            return Json(x);
        }
    }
}

我意识到,如果我修改控制器的构造函数class:

public testController(){
            x = 0;
            x++;
}

当我转到“索引”时,x的值将是1。在我看来,我可以在构造函数中更改x的值,但我根本无法在其中更改x的值一个 HTTP 方法。

我尝试通过制作一个“普通”的class方法来解决问题,使用HTTP方法调用此方法修改x的值:

private void add() { x++; }

[HttpGet("add")]
public JsonResult Add(){
    add();
    return Json(x);
}

我认为,如果构造方法可以工作,那么 class 方法也应该可以工作。但是,它仍然不起作用。我不明白为什么以及如何解决这个问题?

为每个请求创建一个控制器,所以如果你想增加一些持久数据,它需要存储在其他地方。静态字段可以工作,例如

namespace test.Controllers
{
   

    [Route("api/[controller]")]
    public class testController : Controller
    {

        private static int x = 0;

        public testController(){

        }

        [HttpGet]
        public JsonResult Get(){return Json(x);}
       

        [HttpGet("add")]
        public JsonResult Add(){
            x++;
            return Json(x);
        }
    }
}