在global.asax中的Application_BeginRequest事件中,如果請求是針對控制器操作方法,我只想觸發一些邏輯。在Application_BegineRequest中,我怎麼知道請求是否針對MVC控制器?
目前事情越來越稱爲當一個請求是對於像.js文件等
在global.asax中的Application_BeginRequest事件中,如果請求是針對控制器操作方法,我只想觸發一些邏輯。在Application_BegineRequest中,我怎麼知道請求是否針對MVC控制器?
目前事情越來越稱爲當一個請求是對於像.js文件等
在你的web.config的資源,要素在<system.webServer>
您可以添加以下節點
<modules runAllManagedModulesForAllRequests="false" />
這將告訴IIS只爲已知的請求類型運行管理模塊。如果您的服務器針對MVC請求設置了無擴展名或.mvc,則它們仍將被處理。
而不是使用global.asax,使用動作過濾器,然後你可以裝飾確切的控制器或行動來執行你的邏輯。
覆蓋一個或全部下列方法:
public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
}
裝飾你的動作或控制器
[MyActionFilter]
public class MyController {
[MyActionFilter]
public ActionResult MyAction()
{
return View();
}
}
見http://msdn.microsoft.com/en-us/library/dd410209(v=vs.100).aspx其他行動的過濾器。
您可以檢查HttpContext.Current.Request.Path
的值,它給出資源的URL。 這是你的問題的答案,但我更喜歡Jasen的回答。