2013-03-01 25 views

回答

5

通常情況下,一個全局過濾器將是你想要的。但是,由於在路線確定之後纔會觸發,因此在這種情況下可能無法幫助您。

你可以嘗試的一件事是在global.asax中添加一個Application_BeginRequest方法。它甚至不需要什麼。只需在其中設置斷點,然後檢查Request.AppRelativeCurrentExecutionFilePath(或請求的其他成員)以查看入站路徑。

protected void Application_BeginRequest() 
    { 
     if (Request.HttpMethod.Equals("post", StringComparison.InvariantCultureIgnoreCase)) 
     { // Breakpoint here 

     } 
    } 

A 「global filter」 是用於注入行爲等進入管道的優選方法。 MVC已經實現了其中的一些,你也可以擴展或實現你自己的。

我去年實施的一個具體示例:客戶端網站具有過期密碼的功能。大;工作正常,當用戶在被告知時立即改變它。但他們發現他們只能導航到網站的另一部分,直到下次他們登錄後纔再次提示。所以我們添加了一個全局過濾器來檢查密碼是否過期(以及我們是否已經檢查過在此會話中),如果是,則重定向到「更改密碼」屏幕。改變之後,他們可以回到以前的任何地方。

但是,爲了找出路由或綁定問題,這裏有一個缺點:路由引擎已經在您的全局過濾器獲得它之前評估了請求。如果它無法識別目標動作,則您的過濾器將不會被擊中。所以在這種情況下,像Application_BeginRequest這樣的低級功能是您唯一現實的選擇。

+0

這就是我正在尋找的,歡呼! – Firoso 2013-03-01 19:04:22

+0

關注擴展全局過濾器,以及爲什麼它不適用作爲後半部分? – Firoso 2013-03-01 19:04:56

+1

@Firoso在全局過濾器上添加了一些細節。 – GalacticCowboy 2013-03-01 19:22:22

相關問題