2013-08-06 15 views
5

bulunduğu uygulamayı yok sayar:ASP.NET MVC RedirectoToAction bir MVC uygulaması gibi bir sanal dizinde benim sunucusunda dağıtmış olan

"myapp" sanal dizinde

olduğunu

http://localhost/myapp/ 

benim

Ben RedirectToAction("Index", "Home") kullanarak dizine yönlendirme
"http://localhost/myapp/user/login", 

bulunan Girişi görünümü, uygulama

yönlendirmek için denemek görünüyor yerine

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

uygulama içinde

"http://localhost/home/index" 

IIS Web Sitesine kök bulunur ancak belirli durumda çalışmaz çalışır.

Bu uygulama kökü yapılandırmak için bir yol Kaçırdığım ki var?

Ayarlar: Web için Microsoft Visual Studio Express 2012, Windows 7, uygulama havuzu ASP .NET v4.0

+1

bir uygulama olmak için sanal dizin belirlediniz mi? – Brandon

cevap

2

yönlendirme üzerinde% 99 pozitif yapıyor:

return RedirectToAction("Index", "Home") 

o ne olursa olsun sanal dizin ayarları veya nereye ait konum uygulamaya yönlendirmek gerektiğini uygulama kök göreli anlamı e uygulama yer almaktadır. Başka bir sanal dizine uygulamayı taşıdığınızda her zaman global.asax veya web.config dosyasını güncellemeniz gereken her zaman başka bir kabus düşünün ??? Gülünç! Sahip olduğunuz aynı kuruluma sahibiz ve "uygulama atlatma" ile ilgili bir sorunumuz yok.

Eğer RedirectToAction bu neden olduğunu emin misiniz? Eğer böyle bir şey olduğunu olabilir: Bu durumda

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

Bu sorunu yaşamaya olur ve kolayca yaparak bu sorunu giderebilirsiniz:

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

~ sembolü uygulamanın kök göreli yapar ...

+0

Bunun doğru olup olmadığından emin değilim, kendim denemedim, ama mantıklı! Sabit - cevap için 1 – Liam

+0

sayesinde Doğru konum @Simon dönüş RedirectToAction ("Index", "Ev") ' – Silvano

+1

bir hataydı! Teşekkürler... – Simon

0

şu doğru işlevsellik altında 7 IIS. MVC, varsayılan olarak denetleyici/eylem olarak rotayı hesaplar. Bunu yapmak istiyorsanız

aksi takdirde Global.asax içine bir rota eklemeniz gerekir: Ben

//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 }); 

fazla bilgiye Scott gu en blog