問題タブ [ninject-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - Application_BeginRequest() オブジェクト参照がオブジェクトのインスタンスに設定されていません
接続を作成しようとすると、MVC アプリケーションでエラーが発生します。Ninject と一緒に NHibenate を使用しています。
Global.asax.cs
ファイル:
Web.config
ファイル:
これはエラーメッセージです:
c# - Ninject InThreadScopeバインディング
ファイルの到着時にイベントを発生させるファイル ウォッチャーを含む Windows サービスがあります。イベントが発生すると、Ninject を使用して、Ninject を介して注入される Entity Framework コンテキストへの参照を持つビジネス レイヤー オブジェクトを作成します。私の Web アプリケーションでは、常にコンテキストに InRequestScope を使用していました。これにより、1 つのリクエスト内で、すべてのビジネス レイヤー オブジェクトが同じ Entity Framework コンテキストで動作します。私の現在の Windows サービス シナリオでは、Entity Framework コンテキスト バインディングを InThreadScope バインディングに切り替えるだけで十分でしょうか?
理論的には、サービス内のイベント ハンドラーがトリガーされると、それは何らかのスレッドで実行されます。別のファイルが同時に到着すると、別のスレッドで実行されます。したがって、両方のイベントが Entity Framework コンテキストを共有することはありません。つまり、Web 上の 2 つの異なる http 要求と同じです。
私を悩ませているのは、Ninject wiki を見ると、これらのスレッドスコープのオブジェクトが破壊されていることです。
.InThreadScope()
- タイプの 1 つのインスタンスがスレッドごとに作成されます。
.InRequestScope()
- このタイプのインスタンスは Web リクエストごとに 1 つ作成され、リクエストが終了すると破棄されます。
これに基づいて、リクエストが終了したとき(またはその後のある時点)で InRequestScope オブジェクトが破棄される(ガベージコレクション?)ことを理解しています。これは、 InThreadScope オブジェクトがどのように破棄されるかについては何も述べていません。私の例に戻ると、ファイル ウォッチャー イベント ハンドラー メソッドが完了すると、スレッドは離れます (スレッド プールに戻りますか?) 注入された InThreadScope-d オブジェクトはどうなりますか?
編集: InThreadScope() を使用すると、filewatcher のハンドラーが終了したときにオブジェクトが破棄されないことは明らかです。フォルダーに多くのファイルをドロップすることでこれを再現できましたが、最終的に同じスレッド ID を取得したため、以前とまったく同じ Entity Framework コンテキストが得られたため、私のアプリケーションには十分ではありません。この場合、5 分後に到着したファイルは、以前に同じスレッドに割り当てられた古いコンテキストを使用している可能性があります。
ninject - Ninject 指定パスの形式はサポートされていません
Ninject の初期化は、VS2010 からアプリケーションを直接実行すると正常に動作しますが、アプリケーションをカスタム「プラグイン」環境にデプロイすると、アプリを実行するとこのエラーが発生し、Ninject を初期化しようとします。
初期化中にエラーが発生しました
指定されたパスの形式はサポートされていません。
エラー : 指定されたパスの形式はサポートされていません。タイプ: NotSupportedException 場所: System.String CanonicalizePath(System.String, Boolean) スタック トレース: System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath) at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str、Boolean needFullPath) System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess アクセス、AccessControlActions コントロール、String[] pathListOrig、Boolean checkForDuplicates、Boolean needFullPath、Boolean copyPathList) at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess アクセス) 、String[] pathList、Boolean checkForDuplicates、Boolean needFullPath) を System.IO.Path.GetFullPath(String path) で Ninject.Modules.ModuleLoader に配置します。0(文字列パターン) at System.Linq.Enumerable.d _14 2.MoveNext()
at System.Linq.Lookup
2.Create[TSource](IEnumerable 1 source, Func
2 keySelector, Func 2 elementSelector, IEqualityComparer
1 comparer) at System.Linq.GroupedEnumerable 3.GetEnumerator()
at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable
1 pattern) at Ninject.KernelBase.Load(IEnumerable`1 filePatterns) Ninject.KernelBase..ctor (IComponentContainer コンポーネント、INinjectSettings 設定、INinjectModule[] モジュール) で Ninject.KernelBase..ctor(INinjectModule[] モジュール) で MyApp.Ioc.ResolveType.Initialize() で MyApp.Program.Run()
ninject - このninject1.0コードをninject2.0に変換する
私はこのチュートリアルに従おうとしていますhttp://damianm.com/tech/nhibernate-mvc-and-ninject/
しかし、私はいくつかの問題に直面しており、それらは2.0をリリースしたときに行われた変更に関連していると思います
私はninject1.0を使用したことがなく、ninject 2.0を1週間未満使用しているため、変換が難しいと感じています。
これだと思います
に変更する必要があります
これ
に
これらのものは私がそれらが何であるかを見つけることができません
上記は私がこれまでに変換する必要があるものを特定したものです。
これは彼のリポジトリクラスの1つでも見られます
それが本当に何のためにあるのか分かりません。
asp.net-mvc-3 - 基本クラスのコンストラクターのプロパティインジェクションで定義された基本クラスプロパティへのアクセス
ninject wikiのすべてと多くの投稿を読みましたが、このプロパティを参照できるようにインジェクションを設定する方法がまだわかりません。基本クラスのコンストラクターでプロパティを参照して、コントローラーの作成時に最終的に共通のViewBagプロパティを設定できるようにしたいと思います。iInitializableインターフェイスを実装することは正しいアプローチのようですが、これを行う方法がわかりません。また、派生クラスのコーディングを簡素化するために、基本クラスコンストラクターにIMyServiceを挿入しないことを選択しました。
私の最新のコードの試みの簡略版:
ninject - Ninject Contextual Binding: Ninject.Conditions.dll はどこで入手できますか
ここで ninjects コンテキスト バインディングについて読みました: http://ninject.codeplex.com/wikipage?title=Contextual%20Binding
私のプロジェクトでそれを機能させようとしています。ドキュメントには、私が持っていない Ninject.Conditions.Dll への参照を追加する必要があると記載されています。これをどこで入手できるか知っている人はいますか?
github で試してみました: https://github.com/ninject/ninject
ダウンロード リンクを使用して 2.0.1.0 ソースを取得し、それらをビルドできましたが、dll はありませんでした。
ここで同様の質問を見つけました:どこで ninject.web.mvc.dll を見つけることができますか?
ビルドサーバーへのリンクを含む回答。リンクをたどったところ、チームシティのログインリクエストが届きました。アカウントを持っていません。
asp.net-mvc-3 - コントローラーファクトリーとNinjectHttpApplicationの使用の違いは?
Ninject 2 MVC 3 の使用。間違っている場合は訂正してください。ただし、MVC 3 アプリケーションで Ninject を使用する方法が 2 つあります。ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory()); のような新しいコントローラー ファクトリを使用できます。または NinjectHttpApplication を使用してカーネルを構成します。
コントローラー ファクトリと NinjectHttpApplication を使用して DI のバインディングを構成することの違いを知りたいと思っていました。
DI をセットアップするのに最適な場所はどこですか?
structuremap - Ninject と StructureMap のどちらが簡単ですか?
Ninject と StructureMap の間でどちらが単純なのか疑問に思っていましたか? それらを使用する際に注意すべきことはありますか?
ありがとう。
silverlight-4.0 - ViewModel Dispose が呼び出されていない
Ninject と Caliburn.Micro を使用して、MVVM WCF Silverlight アプリを作成しています。私が抱えている問題は、ビュー モデルのライフ サイクルにあります。
ビュー モデルと wcf クライアントをバインドする単純な ninject モジュールを作成しました。
私の IIdCardViewModel では、wcf イベントといくつかのローカルの管理されていない参照を登録および登録解除したいので、IDisposable から継承する必要がありました。
ただし、Dispose が呼び出されることはありません。
次のように dispose を呼び出すために非アクティブ化を追加することを検討しました。
しかし、そのために 2 つのことを追加する必要がありました。それは、オブジェクトを取得して解放する IDCardModule の Unload オーバーライドです。
.InThreadScope() または .InSingletonScope() を Load の Bind メソッドに追加します。
特定のオブジェクトを強制的に非アクティブ化する簡単な方法はありますか? それとも、別の IOC フレームワークを調べる必要がありますか?
IStartable を調べたところ、同様の問題がありました。同様に、Nate の詳細な記事を読んで、アクティベーション ブロックがあり、すべてを using ステートメントでラップしています。私の問題は、ビューモデルが長時間実行される可能性があり、彼のソリューションがここで機能するとは思わないことです。同様に、スリープ状態で GC.Collect を呼び出す特別なスレッドを使用することも適切ではありません。
asp.net - Web アプリケーションの Appdomain 内の WCF サービスで Ninject を使用していますか?
WCF-Ninject 拡張機能を使用する場合は、独自の AppDomain で WCF サービスをホストしていると想定していると理解しています。
私はすでに Ninject.Web 拡張機能と asp.net 互換モードを使用して、メンバーシップ プロバイダーとセッションを取得しています。
Web アプリケーションと同じ AppDomainでホストされている WCF サービスで Ninject を利用する方法はありますか?