C# 每个ASP.NET请求的ApiController对象

C# 每个ASP.NET请求的ApiController对象,c#,asp.net-mvc,asp.net-apicontroller,C#,Asp.net Mvc,Asp.net Apicontroller,每次请求页面后,是否会创建API控制器的新对象 所以我需要知道条件1是否总是正确的 public class ProductsController : ApiController { private int _reqState = -1; public object Get(int id) { if (_reqState == -1} {} //condition #1 //DO SOME WORK WITH _reqState } }

每次请求页面后,是否会创建API控制器的新对象

所以我需要知道条件1是否总是正确的

public class ProductsController : ApiController {
    private int _reqState = -1;

    public object Get(int id) {
        if (_reqState == -1}  {} //condition #1
        //DO SOME WORK WITH _reqState
    }
}

是的,控制器的生命周期很短,仅用于此请求。在那之后,它被处理掉了,你的价值也就失去了

如果要保持某种状态,必须使用会话、应用程序或外部存储器来保存状态

例如:

private int ReqState
{
    get
    {
        return (this.HttpContext.Session["ReqState"] as int?).GetValueOrDefault(-1);
    }
    set
    {
        this.HttpContext.Session["ReqState"] = value;
    }
}

假设_reqState的值在调用动作方法Get和条件检查之间没有改变,或者在控制器构造函数中没有改变,那么条件总是真的

public class ProductsController : ApiController {

    public ProductsController()
    {
        // As long as _reqState is not changed here
    } 

    private int _reqState = -1;

    public object Get(int id) {

        // ... or here

        if (_reqState == -1}  {} //condition #1 - always true
        //DO SOME WORK WITH _reqState
    }
}
为_reqState设置的值不会在多个请求中携带,因为每个请求都会创建和销毁控制器


所以每次_reqState的值都不是变量的同一个实例,它是一个新设置的-1值。

ya,我只想知道有保证为每个请求创建一个对象,但我在MSDN中找不到它