問題タブ [perwebrequest]

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 に答える
770 参照

nhibernate - NHibernateでのPerWebRequestライフスタイルの設定

私はかなり基本的なNHibernateのセットアップを持っています。コードでIoCを実行するために、CastleWidnsorなどの特別なものは使用していません。ライフスタイルをPerWebRequestに設定するだけですが、コードをさかのぼってIoCライブラリを使用するように更新しないと、これを行う方法がわかりません。

設定ファイルでこれを行う方法はありますか?

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

asp.net - キャッスル ウィンザー PerWebRequest LifeStyle と Application_EndRequest

PerWebRequest ライフスタイルを使用して、Linq2Sql に関連するいくつかのコンポーネントを登録しています。それらが作成されるのを見ますが、グローバルの Application_EndRequest メソッドが呼び出される前に破棄されます。それは設計によるものですか?誰かが回避策を知っていますか? UnitOfWork オブジェクトで commit を呼び出して、すべてのリクエストの最後に submitchanges() を実行したいと考えています。Global.asax Application_EndResult を使用することに加えて、同じ結果で IHttpModule も試しました。

Castle2.0を使用しています。

PerWebRequest で自分のものを登録する方法は次のとおりです。L2S DataContext を保持する DataCONtextProvider オブジェクトを作成しています。そのオブジェクトは UoW に挿入されます。

現在、次のように EndRequest から CommonServiceLocator (CSL と Windsor Adapter の両方が 1.0 です) を介してコンテナーから UoW を取得しようとしています。

ありがとう、コーリー

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

.net - PerWebRequestで作成された一部のオブジェクトは、Webリクエストの最後にガベージコレクションされません

与えられた

登録あり:

web.configの適切なもの:

SVNから構築されたCastleのバージョンを使用します。Webページコードの場合:

〜a()が呼び出されず、RedGateプロファイラーがaが収集されていないことを示し、その参照がAllComponentsReleasePolicy.instance2burdenに残っていることがわかりました。


私はこの問題に遭遇した最初の人ではありません

http://groups.google.com/group/castle-project-users/browse_thread/thread/bd287dd66b3a9d64/f48d740621508c64?lnk=gst&q=PerWebrequest#f48d740621508c64

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

asp.net-mvc - Castle PerRequestLifestyle が認識されない

キャッスル/ウィンザーは初めてですが、ご容赦ください。

私は現在、フレームワークSystem.Web.Mvc.Extensibilityを使用しており、そのスタートアップ コードでは、次のように HttpContextBase を登録しました。

私がやりたかったのは、動作を変更し、httpContextBase のライフスタイルを PerWebRequest に変更することです。

そのため、コードを次のように変更しました。

ただし、これを行うと、次のエラーが発生しました。

と の下で<system.web>実行し<system.webServer>ましたが、それでも同じエラーが発生します。ヒントはありますか?

前もって感謝します。

アップデート

リクエストごとに追加されたコード ブロック

system.web.mvc.extensibility フレームワークには、HttpApplication を継承する extendedMvc​​Application というクラスがあり、Application_start メソッドでは、BootStrapper.Execute() を呼び出します。このメソッドのこの実装は次のとおりです。

ご覧のとおり、IBootStrapperTask のリストをループして実行しようとします。たまたま、mvc アプリにルートを登録するタスクが 1 つあります。

xml ファイルのサーバー パスを取得できるように、httpcontextbase オブジェクトを getInstance(resolve) する必要があることがわかります。

0 投票する
3 に答える
1718 参照

castle-windsor - Application_Start での Windsor PerWebRequest 解決

キャッシング クラスに HttpContextBase を挿入しています。HttpContextBase は PerWebRequest として登録されます。各 Web 要求でキャッシュ クラスと対話し、これは正常に機能しますが、アプリケーションの開始時にキャッシュを初期化する必要もあります。

ただし、PerWebRequest が Application_Start で機能しないことは理解しています。

Castle PerRequestLifestyle が認識されない

私の状況でこれを解決する最善の方法は何ですか?

0 投票する
4 に答える
3867 参照

testing - PerWebRequestライフスタイルでCastlewindsorコンポーネントをテストする

キャッスルウィンザーを使用していくつかのテストを実行しようとしています。テストの1つで、ウィンザーインストーラーを確認したいので、コンテナーがそのインターフェイスを指定してコンポーネントを解決できることを確認します。

これまでのところ、問題は、コンポーネントのインストーラーにPerWebRequestライフスタイルが含まれているときに始まります。最初は、HttpContext.Currentがnullであり、テストセットアップで偽のコンテキストを作成することで解決しました。nunitでこの例外が発生しています。テスト

System.Exception:httpモジュールCastle.MicroKernel.Lifestyle.PerWebRequestLifestyleModuleをweb.configのセクションに追加するのを忘れたようです。IIS7を統合モードで実行している場合は、IIS7を下のセクションに追加する必要があります。

これをNUnitから実行しているので、モジュールまたはクラスをウィンザーに登録して機能させる方法、またはこのテストは実際にはWebリクエストではなく、コンテナーが型を解決することを確認するだけで、モックする方法を教えてください。

また、実際のWebリクエストの外部でこのコンポーネントとの統合テストを行った場合にも同じことが起こります。これを機能させる方法や、このテストを実行できるようにWebリクエストを実際にモックする方法はありますか?

事前にトランク

ファー

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

castle - Castle 3.0 は、LifeStyle.PerWebRequest で構成されている場合、Entity Framework.DbContext コンポーネントを破棄しません。

Castle Windsor 3.0 でこの奇妙な動作に遭遇した人はいますか? DbContext のコンテナ構成を PerWebRequest のライフスタイルに設定しましたが、Castle は WebRequest の後にコンポーネントを破棄しません。シングルトンであるかのように、Web リクエスト間でコンポーネントをコンテナ内に保持します。

これを明らかにする問題は、DbContext にデータベース エラーがある場合です。これにより、IIS が再起動されるまで (つまり、手動で DbContext を破棄するまで)、以降のすべての CRUD 操作が実行されなくなります。私たちが知っているように、これは受け入れられません。

DbContext が PerWebRequest でリサイクルされる場合、ページがリロードされると、新しい DbContext があるため、他の CRUD 操作が正常に実行されます。

私の設定は以下の通りです:

私の DbContext クラスは以下のとおりです。

任意のヘルプ/提案をいただければ幸いです。

ありがとう。

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

asp.net - Castle Windsor 3 は、複数の Web 要求にわたって PerWebRequest オブジェクトを永続化します

MVC 4 プロジェクトがあり、コントローラーに PerWebRequest オブジェクトを挿入しようとしています。ただし、複数のリクエストでオブジェクトが再作成されていないようです

ここに私のPerWebRequestObjectがあります:

これが私のTestControllerです:

なぜこれが機能しないのですか?私は WindsorControllerFactory を使用しており、コントローラーを次のように解放していることに注意してください。

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

.net - ウィンザーでプールされたライフスタイルをPerWebRequestライフスタイルと統合する

EntityFrameworkをORMとして使用するASP.NETMVCアプリケーションがあります。現在、EFObjectContextにPerWebRequestライフスタイルを使用しています

高負荷でのアプリケーションパフォーマンスのプロファイリング中に、ObjectContextの作成にボトルネックが見つかりました。

ObjectContextのライフスタイルをPooledに変更したいのですが、問題があります。

私のアプリケーションのレガシー部分には、ServiceLocatorアンチパターンがあります。そのため、ObjectContextはWebリクエストごとに何度も解決され、使用後に明示的に解放されない可能性があります。

PerWebRequestではObjectContextインスタンスが一度インスタンス化され、EndRequestイベントで保証されてリリースされるため、問題にはなりません。

デフォルトのプールされたライフスタイルでは、 Resolveメソッドの呼び出しごとに異なるObjectContextインスタンスが返されます。しかし、Webリクエストスコープで単一のインスタンスを再利用したいと思います。また、リクエストの最後に( PerWebRequestLifestyleModuleを使用して)インスタンスを自動的に解放(プールに戻す)する必要があります。

Windsor用にカスタムLifestyleManagerまたはカスタムIPoolを実装する必要があるように思われます。しかし、Windsorの経験が不足しているため、PooledとPerWebRequestのライフスタイル組み合わせる方法がわかりません。

何かアイデアをいただけますか?ありがとう。

UPD:ObjectContextの状態と再利用の理由について

パフォーマンス上の理由があります。ObjectContextの作成にはかなりの費用がかかります。私はそれを回避する方法を探しています。ObjectContextのステートフルな性質に対処し、それを再利用するための2つのアプローチがあります。

  • クエリにはステートレスコンテキスト(ChangeTrackingをオフにした状態)を使用します。コマンドの場合は、別のインスタンスを使用します。
  • プールに戻ったときにコンテキストの状態をリセットします。
0 投票する
0 に答える
1165 参照

dependency-injection - Castle Windsor 3.2 にない PerWebRequest ライフスタイル

Castle Windsor(バージョン3.0.0.4001)のPerWebRequest Lifestyleを使用していました。最新バージョン (3.2) に更新したかったのです。最新バージョンでは、それは言う

以下は、コンポーネントを登録する方法ですが、最新バージョンではエラーがスローされます。

参照を追加する必要がありますか? または、キャッスル ウィンザー ライフスタイルのどれが Web アプリケーションに推奨されるかを誰かが提案できますか (ユーザーが (顧客のメンテナンス) のような日常の活動にそれを使用する場合)