2010-02-10 33 views
0

許多託管公司讓您定義,如果用戶轉到不存在的頁面,將向用戶顯示哪個頁面。如果你定義了一些.aspx頁面,那麼它會執行並顯示。使用託管公司「404錯誤行爲」來實現URL路由

我的問題是,爲什麼不使用此路由。因爲我可以解析用戶的URL,然後做一個server.transfer到我想要的頁面。我檢查並沒有發送到客戶端的重定向,HTTP頭是HTTP/1.1 200 OK。

那麼,對於沒有ASP.NET 3.5 SP1的服務器或者如果您沒有使用MVC,這是一個好主意嗎?

感謝

回答

1

你「能」做到這一點,但爲什麼不只是創建一個HTTP模塊和處理的路由呢?這就是大多數URL重寫系統的工作原理(實際上,它也是MVC路由的工作原理,因爲global.asax只是一個預編譯的HttpModule,只有一些附加功能)。

依賴於你所描述的那種服務器處理的一件大事就是你確實無法控制它,而且它是一個黑客機制......因此,我的意思是你正在使用web的功能服務器具有特定的目的和設計,並在其上放置不同的含義和功能......這意味着您現在沒有內置的處理實際的404錯誤。此外,您正在考慮的機制難以適應您的目的,而不僅僅是使用其他可用的選項。

除非你需要一些特殊的路由選擇,你應該考慮使用現有的路由組件,例如Mod-Rewrite,或者是在MVC路由引擎實施之前構建並且可以正常工作的十幾種其他流行URL重寫器之一舊版本的asp.net。還有很多關於使用HttpModules,HttpHandlers和其他各種技術在asp.net webform環境中進行路由的教程。

+0

謝謝。這就是我問這個問題的確切原因,因爲這看起來像是一個黑客攻擊,我想知道人們是否認爲它是可靠的。您能否告訴我您對共享主機上託管的網站(本例中爲Godaddy)建議哪些建議。即,我無法打開IIS管理器,並做任何我想要的... – adinas 2010-02-11 06:46:42

+0

幾乎任何基於HttpModule的解決方案都很好,並且不需要任何特殊的IIS。試試這個:http://www.urlrewriting.net/149/en/home.html這是非常簡單的工作,並有據可查。 – 2010-02-11 16:26:49

+0

謝謝。我花了幾天的時間學習這個,看起來不錯 – adinas 2010-02-14 14:15:36