2012-04-26 63 views
1

我有一個MVC應用程序已經移動到wwwroot中的一個子文件夾,並且這個子文件夾已經通過IIS創建了一個應用程序。因此而URL到我的登錄頁面看起來像這樣前:如何處理使用MVC路由的IIS子應用程序?

www.mydomain.com/login

現在看起來是這樣的:

www.mydomain.com/application/登錄

該應用程序工作正常,它似乎沒有影響路由或我的應用程序中的任何鏈接。但是,它是造成我在哪裏引用圖片src的,像這樣的問題:

<img src="/content/images/myimage.png"/> 

因爲它正試圖從URL www.mydomain.com/content/images/myimage.png這顯然檢索圖像返回一個404

在我的Global.asax文件我只使用默認路由,這是我嘗試修改考慮的子文件夾作爲URL的一部分:

routes.MapRoute("Default", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

但是,現在當我試圖去到你的根l www.mydomain.com/application我剛剛得到一個目錄列表!如果我嘗試直接訪問控制器,即www.mydomain.com/application/dashboard我得到一個404!

任何人都知道如何通過MVC路由來處理這種情況?

回答

4
  1. 您不需要更改路由。它從入口點到您的應用程序。
  2. 使用@ Url.Content(「〜/ content/images/myimage.png」)。

希望這會有所幫助。

+0

星爺我知道我可以使用Url.Content但我的網站是大,我不想去改變所有的圖像參考使用Url.Content! – jcvandan 2012-04-26 09:23:41

+1

你可以創建T4模板來爲你更新它們=)http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx – 2012-04-26 09:52:28

+0

很酷並不知道T4模板,聽起來很有用我會檢查出來 – jcvandan 2012-04-26 10:23:29

0

試試這個...

routes.MapRoute("Application", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

routes.MapRoute("Default", 
       "{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 
+0

那贏了' t適用於這種情況,因爲靜態文件不會被路由。它們由StaticFileHandler(IHttpHandler)處理。 – Shelakel 2012-04-27 20:03:32

+0

當我嘗試此操作時,即使ActionLink中沒有提供路由值,所有剃鬚刀ActionLink使用都會顯示以'Application'開頭的錨點網址 – barrypicker 2016-08-09 19:39:28

相關問題