2011-04-15 60 views
0

我在asp.net 4 webforms中使用路由。我有一個主題的DLL,其中包含所有圖像,外觀和感覺所需的CSS和JS文件。我只有1個頁面動態加載頁面中的控件。我使用路由來區分請求。定義了以下路由:忽略嵌入式資源路由ASP.NET 4 WebForms

routes.Ignore("{resource}.axd/{*pathInfo}"); 
routes.MapPageRoute("Default-All-Pages", "Pages/{*OtherParams}", "~/Default.aspx", false); 

用於管理嵌入式資源的處理程序已經定義。當應用程序通過代碼執行時,將請求重定向到default.aspx。然後繼續加載css文件並再次將請求路由到default.aspx。

我希望它將css/jpg請求路由到虛擬路徑處理程序,而不是頁面。我應該定義什麼路線,以便文件的請求不會被default.aspx頁面處理?

回答

0
routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" }); 
routes.Ignore("{*allcss}", new { allcss = @".*\.css(/.*)?" }); 
routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" }); 
routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" }); 

這解決了我的問題。

+0

這也解決了在.aspx文件和catchall路徑中使用web方法時的問題。 – Sam 2014-05-02 17:01:44

0

你忽略HttpHandlers的同樣的方法,你可以添加忽略CSS和JPG文件的規則:

routes.Ignore("{resource}.css/{*pathInfo}"); 
routes.Ignore("{resource}.jpg/{*pathInfo}"); 

這些將會從路由表中被排除在外,並會被任何註冊的處理程序/模塊來處理/ ISAPI過濾器。

+0

我已經試過了。 Doens't似乎工作.... – 2011-04-15 09:07:10

+0

你也嘗試過:'routes.Add(新的System.Web.Routing.Route(「{資源} .css/{* pathInfo}」,新的System.Web.Routing。 StopRoutingHandler()));'? – lukiffer 2011-04-15 09:10:41

+0

是的,我似乎沒有工作。實際上,我截獲了來自global.asax begin request的請求,並且每當有webresources.axd的請求時,它都不會命中aspx init。當有一個對css文件的請求時,它會碰到aspx頁面的init。 – 2011-04-15 09:15:10