8

私は、サービスと作業単位(通常、NinjectがNinjectModuleの依存関係を注入している)で通常のリポジトリパターンを使用するプロジェクトを持っていますが、 ActionFilterAttribute私は表示するページのレイアウトに(DBから)いくつかの情報を注入するので、各コントローラのすべてのアクションを混乱させる必要はありません。ActionFilterAttribute ninject injection - DbContextが破棄されました

私は1つの画面上のDBに保存し、次へ移動して(標準@Url.Actionに)戻って、前に来たときに問題が来る:IndexアクションのActionFilterAttributeがトリガーが、サービスへの呼び出しと対応していますリポジトリ(属性内)は、DbContext has been disposedのため例外がスローされます。

ActionFilterAttributeからDbContextにアクセスする際に問題がありますか?プロパティインジェクションを介してサービスを注入していますか?私は、コンストラクタがActionメソッドのシグネチャに応じて任意の2つのパラメータを受け取るので、属性のサービスに対してプロパティインジェクションを使用することに注意したい。

コードが必要な場合は教えてください。質問を更新します。

+0

コードを入力してください。 –

+0

DBコンテキストとその注入されたすべての場所は、要求スコープ(または短いスコープ)にバインドする必要があります。 –

答えて

3

私は次の質問で私の問題への解決策が見つかりました: Injecting dependencies into ASP.NET MVC 3 action filters. What's wrong with this approach?

Mark Seeman組み合わせのコメントさんをstriplingwarriorとの答えは「それを解決しました。

基本的に私は自分のアクションを装飾し、後で必要とするパラメータを保持する属性に自分のActionFilterAttributeを分割しました。また、アクションのカスタム属性をチェックしたActionFilterにも属していました。 DBからViewBagに移動します。すべてが後でNinjectのBindFilter拡張機能にバインドされるので、必要なメソッドだけに適用されます。

関連する問題