在Global.asax中,以下內容表示什麼?瞭解Global.asax(asp.net-mvc)中的路由
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
在Global.asax中,以下內容表示什麼?瞭解Global.asax(asp.net-mvc)中的路由
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
它告訴路由引擎忽略此請求並將其留給ASP.NET Webforms來處理。
這對使用處理程序elmah.axd的ELMAH日誌記錄非常有用。
沒有這個ASP.NET會嘗試將所有請求映射到AXD處理程序到控制器和操作。具有ignoreRoute意味着URL不會根據默認行爲將URL映射到控制器。
.axd文件是由HTTP處理程序處理的虛擬文件。它們用於(除其他外)向網頁提供各種資源,例如爲AJAX控件自動生成的JavaScript等。
由於這些是虛擬文件,因此您不希望路由引擎嘗試將這些請求映射到控制器。您需要由ASP.NET直接執行它們。
這就是線條所達到的。
這是關於學習MVC真正令人沮喪的事情之一 - 此功能的文檔是可怕的 - 幾乎沒有什麼:http://msdn.microsoft.com/en-us/library/dd470170(VS.100).aspx。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
這允許所有的something.axd文件MVC外運行 - 即「{*} PATHINFO」末允許查詢字符串被忽略(它是一種通配符的)。
請注意,這並不是任何這樣的通配符適用於道路,所以:
trace.axd?clear=1 //excluded from MVC
mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()
有用。除了「{resource}」和「{* pathInfo}」之外,我一直無法找到任何正確的文檔,關鍵字除外。
但是,有一個幾乎完全沒有記錄的功能可以爲您提供在這些被忽略的路線更多的控制:
//ignore all WebForms .aspx/.asmx/.ashx calls anywhere
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" });
如果你傳遞一個匿名初始化的對象與屬性,該屬性變成了可以在路由使用關鍵字。
你不能在路由中傳遞正則表達式,但你可以在這個匿名屬性中。