2009-11-23 57 views
1

我有一個BlogEngine.net實例安裝在我的託管服務器的根目錄。我想玩ASP.Net MVC編寫一個小應用程序,並將該應用程序安裝在根目錄下的文件夾下。混合的MVC路由爲web應用程序下的MVC應用程序

我能夠看到http://example.com/testApp/,但路由的頁面如http://example.com/testApp/edit正在給404。

我已經搜索過,我只是不清楚需要什麼才能獲得路由權。我是否需要在BlogEngine的web.config中設置某些內容,或者是否需要在我的應用程序設置中執行某些操作?

主機是WinHost.com,這是IIS7

編輯/更新

所以我明白http://example.com/testApp被送達因爲該目錄下,並且在路由頁面的Default.aspx不要服務,因爲他們沒有物理aspx的。當我在Visual Studio下啓動時,/編輯會被路由到編輯視圖。

我在猜測BlogEngine.net的global.asax正試圖將這些頁面映射到BlogEngine世界,而不是將它們路由到我的testApp。

如果是這種情況,那麼我的問題是如何獲得BlogEngine將請求轉發到我的testApp?我希望我在web.config中丟失了一些簡單的東西,因爲如果我必須添加東西到BlogEngine的global.asax來進行路由,那麼我是不是需要重新構建BlogEngine?

+0

你真的應該張貼在Global.asax中的映射代碼。 – jfar 2009-11-23 04:18:02

回答

2

基於我在MVC tutorial找到的信息,我發現爲什麼我的路由不能正常工作。託管服務器上

我的請求處理模式被配置爲使用經典.NET應用程序池沒有集成模式。要使其在經典模式下工作,您需要修改路由表以使用文件擴展名或創建通配符腳本映射。

我能夠繼續使用集成模式BlogEngine工作,所以一切我需要解決這個問題是要改變模式。

希望這可以幫助別人......

1

您的應用程序中是否存在用於testApp控制器的Edit.aspx文件?默認路由的工作原理是:

routes.MapRoute(
"Default",     // Route name 
"{controller}/{action}/{id}", // URL with parameters 
new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 

所以在默認情況下,當你訪問首頁/索引,ASP.NET MVC查找的Index.aspx

在你的情況,你的路由由(我只是由這件事):

routes.MapRoute(
"CustomRoute",     // Route name 
"{controller}/{action}/{id}", // URL with parameters, id is optional. 
new { controller = "testApp", action = "Edit", id = "" } // Parameter defaults 
); 

如果你要使用Edit.aspx

內,您的Global.asax文件是在您所有的自定義路由存在,你有感動,文件在所有的O沒有?我聽說的經驗法則是,您希望在默認之前先編寫所有自定義路由。

編輯:

我也碰到這個偶然發現,可能會有幫助

有在配置文件中四個部分是相關的路由:在system.web.httpModules部分,該系統。 web.httpHandlers部分,system.webserver.modules部分和system.webserver.handlers部分。小心不要刪除這些部分,因爲沒有這些部分,路由將不再起作用。

here

好運考慮,希望這有助於。

相關問題