どのように私は、要求ごとの寿命の範囲で動作しますか?

どのように私は、要求ごとの寿命の範囲で動作しますか?

リクエスト/レスポンスセマンティックを持つアプリケーション(例えば、  ASP.NET MVC  や  ウェブAPI)、あなたが扱う各要求のために与えられた依存関係の1つのインスタンスを取得します意味する「インスタンスあたりの要求」であることを依存関係を登録することができますアプリケーションとそのインスタンスによって、個々の要求のライフサイクルに縛られます。

要求ごとの寿命を理解するために、あなたはよく理解していなければならない  、一般的にどのように依存関係の寿命スコープ仕事をあなたはどのように依存関係の寿命スコープの仕事を理解すれば、要求ごとの寿命の範囲が簡単です。

ASP.NETコア上の注意事項

で述べたように  ASP.NETコア統合ドキュメント、  ASP.NETコアは、特定の要求ごとのスコープを持っていません。 すべてが登録されている  InstancePerLifetimeScope() 代わりに  InstancePerRequest() ASP.NETコアのため。

ごとの要求として依存関係を登録します

あなたが要求ごととして登録依存関係をしたい場合は、使用  InstancePerRequest() 登録の拡張子を:

VaRのビルダー= 新しいContainerBuilder(); 
builder.RegisterType <ConsoleLogger> ()
       の.as <ILoggerです> ()
       .InstancePerRequest(); 
VaRのコンテナ= builder.Build()。

あなたは、あなたのアプリケーションのためのすべてのインバウンド要求のためのコンポーネントの新しいインスタンスを取得します。要求レベルの寿命の範囲の作成の取り扱いそのスコープのクリーンアップは、一般的に経由して扱われる  Autofacアプリケーション統合ライブラリ  、アプリケーションのタイプに。

私たちは、詳しく見ていく必要があります

 

どうごとの要求生涯作品

要求ごとの寿命は使用可能  タグ付けされた寿命のスコープと「インスタンスごとにマッチング生涯スコープ」メカニズムを

Autofacアプリケーション統合ライブラリは、  異なるアプリケーションの種類にフックと、インバウンド要求に応じて、彼らが要求寿命スコープとしてその識別それを「タグ」と、ネストされた寿命のスコープを作成します。

+ -------------------------- +
 |    Autofac コンテナ | | | | + ---------------------- + | | | タグ付き要求の適用範囲| | | + ---------------------- + | + -------------------------- +

あなたは、コンポーネントを登録すると  InstancePerRequest()、あなたがリクエストスコープとしてタグ付けされ、そこからコンポーネントを解決するために生涯の範囲を探すためにAutofacを言っています、。あなたが作業単位寿命は、単一の要求時にそのテイク場所をスコープがあればその方法は、要求ごとの依存性は、要求中に共有されます。

+ ------------------------------------------------- --- +
 |                 Autofac コンテナ | | | | + ------------------------------------------------ + | | | タグ付き要求の適用範囲| | | | | | | | + -------------------- + + -------------------- + | | | | | 単位作業範囲| | 単位作業範囲| || | | + -------------------- + + -------------------- + | | | + ------------------------------------------------ + | + ------------------------------------------------- --- +

要求の範囲は一定の値でタグ付けされた  Autofac.Core.Lifetime.MatchingScopeLifetimeTags.RequestLifetimeScopeTag文字列に相当し、  AutofacWebRequest要求寿命スコープが見つからない場合は、取得します  DependencyResolutionException あなたの要求寿命スコープを伝えることが発見されていません。

で以下にこの例外のトラブルシューティングのヒントがあります  トラブルごとの要求の依存関係の  セクションは。

 

おすすめ

転載: www.cnblogs.com/chucklu/p/12578725.html