問題タブ [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.
ioc-container - Ninject.MvcおよびNinject.Wcf拡張機能の安定性
しばらく遊んだ後、企業のようなプロジェクトでNinject2.2の使用を開始する予定です。誰もが本番環境でのこれらの拡張機能に問題がないことを確認できますか?IDisposable
特にシナリオ(MVCコントローラーのクライアントWCFプロキシなど)について心配しています。
asp.net-mvc - ASP.NET MVC 2、Ninject 2.2、およびこのオブジェクトにパラメーターなしのコンストラクターが定義されていません
そのため、私は ASP.NET MVC 2 (現在は Visual Studio 2008 の使用にこだわっています) に時間を費やしてきましたが、現在は Ninject 2.2 とその MVC 統合の使用に移行しています。次の場所から Ninject 2.2 と Ninject.Web.Mvc をダウンロードしました。
https://github.com/downloads/ninject/ninject/Ninject-2.2.0.0-release-net-3.5.zip
https://github.com/downloads/ninject/ninject.web.mvc/Ninject.Web.Mvc2 -2.2.0.0-release-net-3.5.zip
私のMVC 2プロジェクトでそれらを参照しました。私の Global.asax.cs ファイルは次のようになります (Ninject.Web.Mvc README の内容とほとんど同じです)。
そして、次のようなホームコントローラー:
プロジェクトを実行して '/' にアクセスするたびに、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というメッセージが表示された黄色い画面が表示されます。Ninject が私の Foo サービスを解決せず、それを HomeController に注入していないようです。本当に明らかな何かが欠けていると思いますが、それが見えていません。
Ninject属性を使用せずに、NinjectにFooをHomeControllerに注入させるにはどうすればよいですか?
asp.net-mvc-2 - NinjectPerRequestインジェクション
Ninject.Web.Mvc2とリポジトリパターン(エンティティフレームワークモデル上に構築された)を使用するMVC2.0アプリケーションがあります。リクエストの期間中のみ存続する新しいObjectContextを作成しようとしています。私はこれを次の方法で達成しようとしています:
次に、この汎用性を十分に維持するためのアイデアが不足したため、BeginRequestで作業するように設定しました。
Wrapperクラスは、リクエストの最後に強制終了したいものをすべて含めるための単なる汎用オブジェクトです。この特定のケースでは、これを使用して新しいObjectContextを作成し、IDisposableを実装して、次のことを実行できるようにします。
これを行うのに最も美しい方法ではないと確信していますが、これらすべてのことを「学ぶ」ことに多くの時間を費やしてきたので、この時点で私は動こうとしています。
次に、私のコントローラーは次のように注入されます。
そして私のリポジトリも注入されます:
コントローラがUserRepositoryオブジェクト内のGetメソッドを初めて呼び出すと、正常に機能します。更新を押すと(またはポストバックも推測します)、_dbはNullになります。デバッガーをステップスルーしようとすると、Application_BeginRequest()が呼び出される前にController Index()メソッドが呼び出されていることがわかります。「パイプライン」(WebFormsからページライフサイクルと呼ぶことに慣れている)については理解していると思いましたが、今は少し迷っています。誰かが私の脳がいくつかのワイヤーを交差させている場所について詳しく説明できますか?私が言ったように、これはおそらく最も美しい方法ではありませんが、MVC、Ninjectを使用したDI、リポジトリ、およびEntity Frameworkを学ぶのに約1週間半しかありませんでしたので、話しているように感じないでください私が非常に基本的な何かを壊したように思えるなら、私には。
asp.net-mvc-3 - ASP.NETMVC3とグローバルフィルターインジェクション
こんにちは、インジェクションを使用してグローバルフィルターを実装しようとしています。フィルタは次のようになります。
そして、global.asaxに次のようにインジェクション付きのフィルターを取り付けました。
しかし、何らかの理由で、アプリケーションの実行時にフィルターが起動されないのですが、正しく実装されていませんか?
c# - Parallel.Foreach の Ninject 例外
Parallel.Foreach
処理するアイテムのリストを実行するコードがあります。各反復は、Ninject IKernel の独自のインスタンスをインスタンス化し、破棄する各オブジェクトを使用して、いくつかのオブジェクトを作成します。IKernel は、オブジェクトの処理が完了すると破棄されます。
とはいえ、このコードは私の Windows 7、I7 ラップトップで完全に機能します。ただし、Windows 2008 を実行している VPS にプッシュすると、この例外が発生します。例外は同じ反復では発生しません。10 回の反復を経て例外がスローされることもあれば、何百回も反復されることもあります。明らかにスレッド化の問題のようですが、私の VPS 以外では発生しません。問題がある場合、これは ASP.NET IIS でホストされています。
コードのスニペットを次に示します。
編集 1 1 つ確かなことは、これはスレッド セーフの問題であり、アプリケーションごとに IKernel の複数のインスタンスを作成するべきではないということです。複数のビジネス レイヤー クラスが単一のスレッド内の UoW スコープ内で同じ EF コンテキストを共有できる UoW 型アプローチを維持しながら、Entity Framework コンテキスト スレッド セーフを実現するために適切なスコープを構成する方法を理解することが重要です。
unit-testing - UnitTestingを行うときにNinjectを使用して、Moqでオブジェクトをモックする
Ninject を使用した UnitTesting プロジェクトで Moq を使用する際に問題が発生しています。
私のソリューションについての最初の数行。いくつかのプロジェクト (BussinesLogic、DAL、インフラストラクチャなど) が含まれています。私の目標は、BussinessLogic プロジェクトで使用しているロジックを UnitTest することです。ソリューションは基本的に Windows サービス用ですが、スタンドアロンで実行できるようにロジックを入れました。Ninject を使用しており、ProductionModule または TestingModule を使用する天気を指定します (Windows サービスは ProductionModule を使用し、コンソール アプリは TestingModule を使用します)。
アプリケーション内で必要なときはいつでもninjectカーネルを取得するためにファクトリーパターンを使用しています。
私の TestingModule は NinjectModule から継承し、そこで Load() メソッドをオーバーライドしてバインディングを行います。例えば:
Bind<IStorageManager>().To<StubStorageManager>();
StubStorageManager がありますが、空です。これには、IStorageManager からのメソッドの宣言のみが含まれています。
私がやりたいことは (素人の言葉で): unitTest を作成し、TestingModule をパラメーターとして指定して新しいカーネルを作成します。次に、モック オブジェクト (IStorageManager のモックとしましょう) storageManagerMock を作成したいと思います。IStorageManager の一部のメソッドは messageObject を返すため、おそらくそれもモックする必要があります。ビジネス ロジックがその messageObject に基づいて何かを実行しているためです。したがって、何らかの方法でそのメッセージ オブジェクトにプロパティを設定し、それに対していくつかの businessLogic メソッドを呼び出して、ロジックが正しく機能するかどうかを確認したいと考えています。
あまり複雑にしていないことを願っています。
私はモッキングと依存性注入にまったく慣れていませんが、喜んで学びます。
asp.net-mvc-3 - パラメーターなしのコンストラクターを使用した Ninject とプロバイダー モデル
カスタム RoleProvider を実装しており、Ninject を使用したいのですが、パラメーターのないコンストラクターの問題に直面しています。これに注射する方法について何か考えはありますか??
asp.net-mvc-3 - Ninject と Entity Framework
私は MVC アプリで Ninject を使用しており、EF4.1 Code First も使用しています。2 つの異なるブラウザー インスタンスからリクエストを送信できることをテストしようとすると、問題が発生します。
基本的に、両方のブラウザでほぼ同時にログインすると、「モデルの作成中はコンテキストを使用できません」というエラーが表示されます。
さて、私の最初の仮定は、競合するインスタンスがあり、したがってコンテキストのスコープを正しく設定していないということです。
必要なテーブルを含む基本クラスのコンテキストがあり、これから継承します。次に、注入されたファクトリがあり、リポジトリをリクエストしたときに実際にコンテキストを作成する責任があります。
接続文字列は実行時に決定されるため、これを行う必要があるため、web.config に含まれる接続文字列をそのまま使用することはできません。
リポジトリが必要なときにリポジトリを注入すると、独自の注入があり、そのコンテキストが作成され、デフォルトの実装を提供できるという考えです。
私の次の懸念は、一部のインスタンスを正しく閉じたり破棄したりしていないことです。セッションスコープで特定のオブジェクトデータを設定するために他の誰かの例を使用しましたが、ほとんどの場合、OnRequestScope を使用しようとします。
validation - Model.IsValidは常にtrueを返します
わかりました、私はここでウィットエンドに近づいています。ビューモデルを備えたシンプルなMVC3アプリケーションがあります
ViewModel
コントローラ
何らかの理由で、ModelState.IsValidは常にtrueとして実行されています。名前を空白のままにしても。モデル/ビューモデルがまったく検証されていないようです。これは他のアプリケーションでも機能するので、何かを接続していないと確信しています。今のところ問題はないと思いますが、すべての検証JavaScriptも含まれています。
更新 興味深いことに、@ Html.TextBoxFor()によって生成されているhtmlタグには、data-val属性とdata-val-required属性が含まれていません。
意見
更新II
さて、これは興味深いです。新しいアプリを作成し、基本的なコードで動作するようにしました。次に、DIコードをglobal.asax.csに追加すると、検証が機能しなくなりました。具体的には、
Application_Start()から呼び出します
SetupDependencyInjection()を削除すると、検証が機能し始めます。明確にするために、DIはうまく機能しますが、検証を無効にするようです。これは、MVC3ツールの更新前はうまく機能していました。