2017-06-13 5 views
-1

ページへの各リクエスト後にAPIコントローラを作成する新しいオブジェクトがありますか?各リクエストのApiControllerのオブジェクトASP.NET

したがって、条件#1が常に真であるかどうかを知る必要がありますか?

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

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

答えて

1

はい、コントローラーの寿命は短く、この要求のみです。その後、それは廃棄され、あなたの価値は失われます。

状態を保持したい場合は、SessionApplicationまたは外部ストレージを使用して状態を保存する必要があります。

例えば:

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

ya、各リクエストのオブジェクトが作成されることが保証されていることを知りたいだけですが、MSDNで見つけることはできません – sinitram

0

Get()_reqStateの値は、あなたのアクションメソッドの呼び出しの間に変更されていないと仮定して、条件付小切手、またはお使いのコントローラのコンストラクタで - [はい条件が常にあります本当。

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の値です。

関連する問題