これら 2 つの手法の違いを教えてください。以下で説明する私の経験とこの記事に基づいて、ルーティングが適用されると PageHandlerFactory は呼び出されないと思います。
PageHandlerFactory
ユーザーがページにアクセスするたびに呼び出される独自のクラスが派生しています。
ルートを介してページにアクセスしない場合、web.config のこのコード行ですべて問題ありません
<httpHandlers>
<add verb="*" path="*.aspx" type="MyProject.Web.DependencyInjectionPageHandlerFactory, MyProject.Web" />
</httpHandlers>
しかし、ルートを介してページにアクセスすると、たとえば
RouteTable.Routes.MapPageRoute("Login", "login", "~/Pages/Login.aspx");
ハンドラは適用されません。ハンドラーのコンストラクターにブレークポイントを配置してテストしたところ、ルートを介してページにアクセスしたときに呼び出されませんでした。プロジェクトで IoC/DI を使用しているため、ルーティングを使用している場合でも、引き続き IoC/DI を使用して aspx ページに DI を挿入したいと考えています。
これを web.config でどのように管理しますか? または、少なくともコードで。
編集:ページが読み込まれるたびに発生するイベントがあることがわかりました。Global.asax では
Application_PostRequestHandlerExecute
これで、URL を解析することで、どのように呼び出されるかを簡単に知ることができます。一部のページに PageHandlerFactory を適用する方法はありますか?