2013-08-06 21 views
5

我有一個MVC應用程序部署在我的服務器中的虛擬目錄,如應用程序:ASP .NET MVC RedirectoToAction忽略其中位於

http://localhost/myapp/ 

哪裏「的myapp」是虛擬目錄

在我登錄查看,位於

"http://localhost/myapp/user/login", 

我重定向到使用RedirectToAction("Index", "Home")指數,似乎應用嘗試重定向到

"http://localhost/home/index" 

代替

"http://localhost/myapp/home/index". 

應用程序工作時,它位於IIS網站的根目錄,但在特定情況下無法正常工作。

它的存在來配置應用程序根的方式,我錯過了什麼?

設置:微軟的Visual Studio Express的2012年的Web,IIS 7的Windows 7,應用程序池ASP .NET v4.0的

+1

已經設置您的虛擬目錄設置爲一個應用程序? – Brandon

回答

2

路由

//this is your new route which needs to be ABOVE the detault 
routes.MapRoute(
// Route name 
"myapp_Default", 
// Url with parameters 
"myapp/{controller}/{action}/{id}", 
// Parameter defaults 
new { action = "index", id = UrlParameter.Optional }); 


//This is the default route that should already be there. 
routes.MapRoute(
// Route name 
"Default", 
// Url with parameters 
"{controller}/{action}/{id}", 
// Parameter defaults 
new { action = "index", id = UrlParameter.Optional }); 

更多信息我99%肯定的,這樣做:

return RedirectToAction("Index", "Home") 

是應用程序根目錄相對的意義,它應該重定向到自己所處不管虛擬目錄設置或wher應用e應用程序位於。我的意思是想到噩夢,否則每次你移動應用程序到不同的虛擬目錄,你需要更新global.asax或web.config文件?荒謬!我們的設置與您的設置相同,我們在「應用跳轉」方面沒有任何問題。

你肯定RedirectToAction導致此?難道說你有這樣的:

@Url.Content("/Home/Index") 

在這種情況下,你會遇到這個問題,你可以很容易地通過做解決這個問題:

@Url.Content("~/Home/Index") 

〜符號使得它相對應用程序的根...

+0

我不確定這是否正確,沒有經過測試,但它是有道理的! +1 – Liam

+0

感謝您的答覆,這是在視圖代碼 – Silvano

+1

錯誤必須是'返回RedirectToAction(「指數」,「家」)' – Simon

0

這就是正確的功能下。 MVC將默認情況下將路由計算爲控制器/操作。

如果你想這不這樣做,你需要一個路由添加到Global.asax:在斯科特谷的blog