3

毎回 MvcApplication クラスにコードを配置することなく、Application_Start および Application_Endrequest にコードを接続して実行するための推奨される方法は何ですか?

asp.net 4に接続できるイベント、属性、または何かがあるのではないでしょうか?

4

2 に答える 2

3

HttpApplication クラスには多くのイベントがあります。ただし、イベントの接続をブートストラップする何かがまだ必要です。

PreApplicationStartAttributeを見ることができます。アプリケーションがコンパイルされる前に実行するコードを接続できます (ただし、Application インスタンスはそれほど早くは利用できません)。

David Ebbo もWebActivatorと呼ばれる同様のシステムを作成しました。

于 2010-11-16T22:30:24.557 に答える
2

これは、 「アプリケーションがコンパイルされる前にコードを実行できるようにする」という正しいステートメントではありません。

作成した WebActivator クラスは、実際にはアセンブリにコンパイルされますが、実行時に 3 つのイベントにフックできます。

1.) PreApplicationStartMethod 2.) PostApplicationSTartMethod 3.) ApplicationShutdownMethod

David Ebbo の記述から:

「WebActivator は、他のパッケージがスタートアップおよびシャットダウン コードを Web アプリケーションに簡単に取り込めるようにする NuGet パッケージです。これにより、多くのパッケージのスタートアップ ロジックで global.asax を変更するよりもはるかにクリーンなソリューションが得られます。」

WebActivator の使用は、他のパッケージのスタートアップ コードに限定されるものではなく、アプリケーションのスタートアップ コード (ブートストラップ) にも使用できます。

たとえば、MVC3 を使用して完了した最近のプロジェクトで、Unity の依存関係、Combres のセットアップ、および 51DegreesMobi のセットアップをセットアップおよび構成するために使用しています。これにより、Global.asax にコードを 1 行も入力したり、煩雑にしたりすることなく、それぞれに個別のクラス ファイルを作成できます。

また、WebActivator.PreStartupMethod を持つ多くのクラスを持つことができ、.NET 4 属性とは対照的に、App-Start の前にすべて実行されるという点で、.NET 4 PreApplicationStartMethod のはるかに優れた代替手段です。一度しか使用できません。

于 2012-01-27T19:21:32.167 に答える