我寧願使用分析MVC過濾器因爲MVC過濾器允許添加預處理和後處理的行爲和filterContext參數應該給你足夠的信息。
例如,我會爲剖析
public class ProfilerAttribute : FilterAttribute, IActionFilter, IResultFilter, IExceptionFilter {
public void OnActionExecuting(ActionExecutingContext filterContext) {
Debug.WriteLine("Before Action is executing");
}
public void OnActionExecuted(ActionExecutedContext filterContext) {
Debug.WriteLine("After Action is executed");
}
public void OnResultExecuted(ResultExecutedContext filterContext) {
Debug.WriteLine("After Action Result is executed");
}
public void OnResultExecuting(ResultExecutingContext filterContext) {
Debug.WriteLine("Before Action Result is executing");
}
public void OnException(ExceptionContext filterContext) {
Debug.WriteLine("oops! exception");
}
}
創建ProfilerAttribute並註冊爲GlobalFilter在Global.ascx ....
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new HandleErrorAttribute());
filters.Add(new ProfilerAttribute());
}
希望它可以幫助。謝謝。
更新:忘了提的是,MVC篩選器僅執行路由後匹配。所以,你不需要過濾掉靜態資源,因爲它已經由MVC完成了。
Request.PhysicalPath方法的問題是假設請求是靜態的,如果請求可以直接映射到文件名,並且如果不是靜態請求則不是。例如,我不希望僅僅因爲文件不存在於磁盤上而將錯誤鏈接或對已刪除映像文件的引用解釋爲非靜態鏈接。 – nathanchere
然後,您的代碼可能需要檢查響應代碼以確定此情況(儘管同樣可以應用缺少的動態文件),因爲根據定義,以上是物理文件是靜態的,而您正在尋找靜態文件類型。要真正檢測到您需要進行文件類型假設或查詢iis或配置所有映射的應用程序。從技術上講,我可以通過將.js映射到aspnet_isapi或另一個httphandler來使動態文件成爲動態文件,因此您想在哪裏繪製線? –