問題タブ [tinyioc]

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.

0 投票する
1 に答える
122 参照

ioc-container - TinyIoC のセッション スコープのインスタンス

ユーザー セッションごとに 1 回だけ作成されるクラスのインスタンスが必要です。このようなクラスを TinyIoC に登録するにはどうすればよいですか? NancyFx を使用しています。

0 投票する
1 に答える
102 参照

unit-testing - TinyIoc を使用して Routebuilder 例外を引き起こす Nancy での単体テスト

System.MissingMethodException の取得、メソッドが見つかりません: 'Void RouteBuilder.set_Item()

これは、ブラウザーから呼び出した場合は問題なく実行されますが、この設定でテストすると失敗します

テスト用の Routebuilder がこのルートを選択しない理由の手がかりはありますか?

0 投票する
1 に答える
2771 参照

c# - EntityFramework DbContext ライフサイクル + Postgres: "操作は既に進行中です。"

私は数日間、次のことをいじっています。

リポジトリ パターンと UnitOfWork を備えた EntityFramework、および Postgres を使用して、Mono で実行されているナンシー アプリがあります。Nancy は、IoC コンテナーとして TinyIoC を使用します。

バックエンドが一度に 1 つの要求にヒットするように、フロントエンドで要求をキューに入れる Web アプリがあります。これはすべてうまくいきます。

ただし、同じバックエンドに接続し、バックエンドへのリクエストをキューに入れず、リクエストをほぼ同時に起動する iOS アプリを実行すると、問題が発生します。

ランダムな間隔で、バックエンドはこのエラーをスローし始めます:

Nancy ブートストラップで、次のような依存関係を登録しています。

これはマルチスレッドの問題であり、2 つの別々の要求が同じ DbContext (または基になる接続) を使用しているため、問題が発生していると感じています。

Nancy ブートストラッパーのメソッドに依存関係を登録しようとしましたConfigureRequestContainerが、これにより「接続が開いていません」という例外がスローされます。

この問題の背後にある理論は、この記事で明確に説明されています: http://mehdi.me/ambient-dbcontext-in-ef6/

以下は私には不明です:

  • これがマルチスレッドの問題であると仮定するのは正しいですか?
  • 各リクエストが独自の DbContext/接続を使用していることを確認する適切な方法を知る必要があるため、衝突しないようにします。できれば TinyIoC/Nancy を使用して DbContext のライフサイクルを管理します。

これが複雑な問題であることは理解しています。追加情報が必要な場合はお知らせください。

ありがとうございました :-)。

0 投票する
0 に答える
4948 参照

c# - Nancy.TinyIoc.TinyIoCResolutionException: タイプを解決できません

dotnet コアで Nancy を使用して動作する JWT でステートレス認証を取得しようとしています。これをUbuntu VMで実行しています。しかし、私は私のでcannot resolve typeエラーに遭遇Startup.csし続けますx.UseNancy();

私のスタートアップクラスは次のようになります。

私の ConfigProvider クラス:

RequiresStatelessAuth 拡張機能:

ホームモジュール:

IoC コンテナーに何も登録していません。しかし、ブートストラップで以下を試しました:

それが機能するために、アプリケーション全体に変更IConfigurationRootしました。ConfigurationRoot

何を試しても同じエラーが発生します。スタックトレース:

私は Nancy/Linux/dotnet コア初心者ですが、この問題を解決する方法を誰か説明してもらえますか?

編集、作業コード:

ブートストラップの変更:

Startup.cs:

サイト ノート: おそらくを be of typeに変更Configurationし、上記のように 2 回ではなく、-のコンストラクターで 1 回だけ型キャストを行います。Startup.csConfigurationRootStartup.csConfigure

0 投票する
0 に答える
49 参照

c# - ITinyIoCObjectLifetimeProvider の ReleaseObject が呼び出されていません

hangfire でジョブごとにシングルトン DB コンテキストを使用するために、カスタム ライフタイム プロバイダーを実装しました。以下のコードの問題は、作成されたインスタンスが解放されていないことです。

私の質問は:ReleaseObjectメソッドが呼び出されないのはなぜですか?

0 投票する
0 に答える
120 参照

c# - AsPerRequestSingleton() によって作成されたオブジェクトは自動的に破棄されません

NancyFX の TinyIOC で依存性注入を使用しようとしています。

私がやろうとしているのは、リクエストごとに 1 つの SqlConnection を自動的に閉じる必要があることです。これまでに行ったことは、ConfigureRequestContainer メソッドをオーバーライドし、IDbConnectionService を AsPerRequestSingleton() メソッドに登録する CustomBootstrapper を作成することです。

これにより、リクエストごとに SqlConnectionService が存在し、リクエスト後に破棄する必要があります。少なくとも、ドキュメントを読んだ後、それがすべきだと思います。

カスタム ブートストラッパー:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/CustomBootstrapper.cs

そして SqlConnectionService:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/Services/SqlConnectionService.cs

このサービスは IDisposable インターフェイスを実装し、基になる SqlConnection を破棄する必要があります (IDbConnectionService は IDisposable から継承します)。

残念ながら、この Dispose() メソッドが呼び出されることはありません。したがって、現状では、データベースへの接続を開いたままにします。これは(本当に)悪いことです:-)

私の質問は、依存性注入を使用してこれを修正する方法です。

Java で Spring MVC から知っているパターンをエミュレートしようとしています。すべてのサービスは getCurrentSession() を呼び出して Hibernate セッションを取得できます。リクエスト スコープの SessionFactory が挿入され、すべてのサービスが sessionFactory.getCurrentSession() を実行して現在のセッションを取得できます。

NancyFX と TinyIOC を使用して同じようなことをしたいと思っています。

元の質問に戻ります: AsPerRequestSingleton() で作成されたオブジェクトで Dispose メソッドが呼び出されないのはなぜですか? 意図した結果を得るにはどうすればよいですか? (リクエスト / レスポンス スコープの期間中存続し、完了すると自動的に破棄されるオブジェクト)

よろしくお願いいたします。 Marc Schlechter

0 投票する
2 に答える
322 参照

database-connection - NancyFx アプリケーションでリクエストが終了した後、DB 接続が閉じられない

私は Nancy Web アプリを構築しており、DB アクセスに OrmLite を使用しています。すべてのリクエストが新しい DB 接続を開き、それを閉じないことに気付きました。OrmLiteConnection クラスを Application コンテナに登録すればアプリケーションスコープになると思っていたのですが、何か抜けているようです。

ここに私のコードがあります(でConfigureApplicationContainer):