簡體   English   中英

在Asp .NET MVC 2中的Global.asax.cs中識別MVC請求

[英]Identify MVC request in Global.asax.cs in Asp .NET MVC 2

在ASP.NET MVC 2的Global.asax.cs中的EndRequest處理程序中,是否可以通過mvc控制器而不是通過獲取某些資源文件(js,css,圖像)的請求來識別當前請求? 更令我感興趣的是,即使曾經使用控制器生成響應但沒有從OutputCache提供響應,也可以這樣做。

我認為您可以運行以下代碼: this.Context.Handler is MvcHandler Global.asax中Application_EndRequest中的this.Context.Handler is MvcHandler

如果您想遍歷路線,可以執行以下操作:

if(this.Context.Handler == null)
{
            foreach (var route in RouteTable.Routes)
            {
                var foundRoute = route.GetRouteData(new HttpContextWrapper(Context));
                if(foundRoute==null)
                    continue;    

                if(foundRoute.RouteHandler is MvcRouteHandler)
                {
                  // code
                  break;
                }
            }
}

如果我沒記錯的話,如果findRoute與上下文不匹配,它將為NULL,但是您應該運行此代碼並對其進行測試。

僅供參考,忽略的路由實現StopRouteHandler。 MvcRoutees實現MvcRouteHandler。 還有其他一些處理程序,例如PageRouteHandler和ResourceRouteHandler。

更新:

順便說一句,如果您打算使用此搜索,我會添加一個哈希或某種緩存方法,因此您不必每次都遍歷路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM