問題タブ [session-per-request]
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.
asp.net-mvc-3 - StructureMap HttpContextScopedは必要ですか?
EF code first
のチュートリアルで以下のようなコードを見て、パターンMVC
をStructureMap
作成しました。Context Per Request
FirstEntity
、SecondEntity
および...すべてIunitOfWork
のコンストラクターが必要です。
ご覧のとおり、他のユーザーには使用HttpContextScoped()
せContext
ず、EndRequest
呼び出した場合に使用しますReleaseAndDisposeAllHttpScopedObjects()
。
1-これは正しいアプローチですか?
2- HttpContextScoped()を他のすべてに使用しますか、それともService layer Interfaces
単に使用しIUnitOfWork
ますか?例えば
また
3-ReleaseAndDisposeAllHttpScopedObjects()
すべてのインスタンスを破棄しますか、それとも単に破棄しContext
ますか?
nhibernate - リクエストごとの nHibernate セッションと例外管理
これに似たシナリオがあります: nHibernate Session Per Request を使用する Asp.NET MVC 4 Web サイト。セッションは、Ninject を使用して、Get メソッドと Save メソッドを使用してリポジトリに挿入されます。
Session Per Request について説明し、それが Web アプリケーションで行う方法であると述べている記事がたくさんあります。
しかし、次のようなロジックの実装に問題があります。
ユーザーにメッセージを表示してビューを表示したい。しかし、結果の Web ページも更新する必要があるため、データベースからいくつかの情報を読み取る必要もあります。
nHibernate のドキュメントによると、例外が発生したセッションは破棄する必要があります。ドキュメントはこちら
しかし、ここで進める最善の方法に関する記事が見つかりません。
この状況に最適なアプローチは何ですか? 新しいセッションをリポジトリ オブジェクトに挿入する必要がありますか?
ありがとう。
c# - 要求ごとのセッション MVC アプリでの NHibernate の問題
ORM として NHibernate を使用して C# MVC 3 を作成しましたが、ほとんどのページの読み込みで奇妙な例外がスローされます。それらは主にクローズドセッションなどに関連しているようで、一般的な問題のほとんどを確認しましたが、ほとんど役に立ちませんでした. 例外には次のようなものがあります。
例外の壁についてお詫び申し上げます。それらは関連していると思われますが、コードに別のエラーが発生し、1 つまたは 2 つのエラーが発生する可能性があります。これらのことに対してランダムという言葉を使用するのは好きではありませんが、それらを呼び出す特定のコード行を追跡できないようです.ISessionオブジェクトに関連するコード行に表示されるようです. Global.asax ファイルの BeginTranscation メソッドで "Session is closed" 例外がスローされたことさえあります。
アプリケーションは、hibernate.cfg.xml で current_session_context_class の Web オプションを使用します。
私の疑いは、それが私のセッション管理コードに関連していることです。Web サイトは通常、約 10 個の AJAX リクエストを同時にロードします。複数のページが同時にロードされると、エラーがより頻繁に発生するようです。使用されるデータベースごとに 1 つずつ、合計 2 つのセッション ファクトリがあります。
関連する Global.asax コードは次のとおりです。
NHibernate プロファイラーで実行されているページを見てきました。セッションが BeginTranscation で開始されない場合もあれば、コミットされない場合もあれば、どちらでもない場合もあります。そして最も不可解なことに、それらは 3 回開始されても終了しないことがあります。
ISession オブジェクトへのすべての呼び出しは、次のコードによって管理されます (ファクトリごとに 1 つずつあります)。
上記のコードに従って、フラッシュ、コミット、セッションの破棄、および再オープンが行われない限り、アプリ全体で BeginTransaction または Commit への呼び出しはありません。皆さんがこれに当てることができる光は大歓迎です!
c# - Application_Error からページをリダイレクトする際のエラー
リダイレクトを実行しようとしています。構成クラスであるシングルトン クラスがあり、これに関する情報を取得して、conactionString に乗ります。暗号化されたファイルに保存したこのデータは、session-per-request を使用しています。マウントする前に、セッション構成ファイルを確認する必要がある場合は、例外をスローします。
それ以外の場合は、シングルトン クラスである [設定] ページにリダイレクトする必要があります。
ただし、このリダイレクトに問題があり、ブラウザーのリンクが変更されていますが、リダイレクト ループが発生しています。既に Cookie をクリアして、外部サイトのオプションを有効にしようとしています。
誰かが私を助けることができますか?
c# - NHibernate で Merge() を使用する際のエラー: 同じ識別子を持つ別のオブジェクト
私は FluentNHibernate を使用していますが、投稿を行うとこのエラーが発生しました。
同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられていました
それが私のコントローラーです:
そして、それが私の Add on RepositoryBase です。
Merge() の使用について私が見たすべての質問により、NHibernate は既にセッションにあるため、ユーザーから 1 つの ID を保存しようとしますが、Merge() を使用して同じエラーが発生しました。また、セッションごとのリクエストも使用しています。そして、私はこのドキュメントで同じことをしようとしました。どうすれば修正できますか?