2011-11-07 15 views
7

Millet, MVC 3 uygulama üzerinde çalışıyoruz. VS 2010'un yerleşik web sunucusunu kullanıyordum. Bugün, çeşitli nedenlerden dolayı, onu sanal bir dizine taşımaları ve IIS 7'de hala geliştirme bilgisayarımda çalıştırmaları istendi.ASP.NET MVC 3: Uygulamayı sanal dizine taşı. Neyi değiştirmek zorundayım?</p> <p>

Şimdi onun URL'sini "localhost: 12345" yerine "localhost/MyVirtualDirectory" olduğunu, ne işi yönlendirme yapmak için değiştirmek gerekiyor ve?

Sadece @ Html.ActionLink ve benzeri herhangi bir ham HTML bağlantı etiketleri veya yönlendirmeler kullanmıyorum. Okuduğum şeye göre, eğer MVC yöntemini yapıyorsam, bu değişim şeffaf olmalıydı.

Ama doğru başında

sonrası kimlik doğrulama yönlendirme başarısız olur. Başarılı kimlik doğrulaması üzerine, Bunu tahmin

this.RedirectToAction("index", "Home") 

sonucunu döndürmek gerekiyordu: Bunun yerine "/ MyVirtualDirectory/Ev" yönlendirme "/ Ev" gider. Hangi başarısız olur.

Yani mutlaka bu kadar ayarlanması gerekir eksik. Bu ne?

Teşekkürler, hepsi.

+0

'RegisterRoutes' sizin Global.asax sınırlamasına uyan görünüyor diyor? –

+0

Muhtemelen IIS'yi yanlış yapılandırmışsınızdır. Bu tamamen şeffaf olmalı. –

+0

@DarinDimitrov Tamam, buna inanmaya hazırım. MVC uygulamaları WebForms uygulamalarından farklı olarak ayarlanmak zorunda mı? –

cevap

3

IIS olarak, "Uygulama dönüştürün." Sanal dizin seçin ve

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

Akıl: Eğer Global.asax varsayılan rota harita kullanıyorsanız Ayrıca, böyle bir şey okumalısınız sonra IIS ele alacağız başka bir uygulamanın bir alt dizininde MVC uygulamasını koyarsanız MVC uygulamanızın kökü yerine diğer uygulamanın kökeni. Eğer istediğin davranışı ise (olası) o zaman bu hesaba katmalı için Global.asax değiştirmeniz gerekir:

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

Çok teşekkür ederim. Ancak, IIS'ye göre sanal dizim zaten bir uygulamadır. IIS7.5 var ve Varsayılan Web Sitesi İçeriği görünümünde sanal dizinin bir "tür" Uygulaması var. –

+0

Tamam, sorunuza sanal dizin yazdığınızda, bunu bir uygulama olarak dizini belirtmediğinizi gösteren olası bir gösterge olarak aldım. Uygulama havuzu ayarlarını vb. Kontrol edebilirsiniz, ancak daha önce de belirtildiği gibi bu muhtemelen bir serverfault.com sorusu haline gelir. –

+0

Sorunumda, yönlendirme ifadesinde yanlış türetilmiş bir URL olduğu ortaya çıktı. Seninki, sorulan soruya iyi bir cevap olsa da - Gerçekten neler olup bittiği hakkında yanlış olduğum oldu. Cevap verdiğiniz için çok teşekkür ederim! –