C# 每个ASP.NET请求的ApiController对象
每次请求页面后,是否会创建API控制器的新对象 所以我需要知道条件1是否总是正确的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 } }
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中找不到它