3
我有一個HttpModule
,它攔截所有請求並根據路由規則從數據庫加載數據。但是,我一直遇到一個問題;如果路徑不存在GetRouteData
只適用:ASP.NET路由 - 如果路徑存在,GetRouteData不起作用
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
假設一個請求進來的URL http://localhost/contact
,我得到有關該網址正確的路由數據如果路徑不會在文件系統中存在。當我想通過在路徑~/contact/default.aspx
中創建一個aspx頁面來自定義網址時,出現問題。一旦我這樣做,GetRouteData
返回null
。
我甚至嘗試創建一個新的HttpContext
對象,但如果頁面存在,我仍然無法檢索路徑數據。
有沒有人遇到過這個問題?有解決方案/解決方法嗎?
所有幫助將不勝感激。
嗯,確實很有幫助!這當然解決了我的問題,但不幸的是產生了一個新問題。當我這樣做時,我所有的CSS,js和圖像文件都會通過我的路由規則進行路由,而這並不是我想要的。我仍然希望現有文件使用原始處理程序,但我只想獲取路由值。那可能嗎? – 2011-05-02 00:13:13
該問題不是通過路由現有文件創建的。這是由URL路由導致的單獨問題。我很抱歉,我不確定你的意思是你只是想獲得路由值。 – 2011-05-02 00:17:01
舉例來說,我有一個「聯繫我們」頁面,我希望它顯示來自數據庫的內容以及提交聯繫信息的表單。如果「聯繫我們」頁面不存在,我可以調用:var pageName = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current))。Values [「name」];並檢索與該頁面相關的數據數據庫。但是,當頁面存在時,我不能這樣做,因爲'GetRouteData'返回null。說得通? – 2011-05-02 00:27:00