ASP.NET MVCのすべてのリクエストでコードを実行する
-
05-07-2019 - |
質問
すべてのコントローラーが継承するコントローラーがあり、コントローラーのリクエストごとにコードを実行する必要があります。私は次を試しました:
protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
if (Session["mallDetected"] == null)
{
Session["mallDetected"] = DateTime.Now.Ticks;
IList<Mall> malls = Mall.FindNearestByIp(Request.UserHostAddress);
if (malls.Count > 0)
{
Session["mall"] = malls[0];
}
}
base.Execute(requestContext);
}
しかし、base.Execute()を呼び出した後までは、Executeメソッドでセッション状態を利用できないようです。 ASP.NET MVCの各リクエストに対してこのセッションコードを実行できる場所はありますか?
解決
ベースコントローラーで OnActionExecuted
をオーバーライドするか、機能をフィルターとして実装してください。
他のヒント
リクエストごとにASP.NETアプリケーションで何かを実行したい場合は、おそらくコントローラに構築するよりもIHttpModuleに構築する方が良いでしょう。後継者がコントローラーを正しく実装することをどのように保証しますか?
所属していません StackOverflow