2011-11-07 12 views
7

Ludzie,ASP.NET MVC 3: Przeniesiono aplikację do katalogu wirtualnego. Co muszę zmienić?

Pracuję nad aplikacją MVC 3. Korzystałem z wbudowanego serwera WWW VS 2010. Dzisiaj, z różnych powodów, zostałem poproszony o przeniesienie go do katalogu wirtualnego i uruchomienie go w IIS 7, wciąż na moim komputerze deweloperskim.

Teraz, gdy jego adres URL to "localhost/MyVirtualDirectory" w przeciwieństwie do "localhost: 12345", co muszę zmienić, aby routing działał i gdzie?

Nie używam żadnych surowych znaczników HTML ani przekierowań, tylko @ Html.ActionLink i tak dalej. Zgodnie z tym, co przeczytałem, jeśli robiłem rzeczy w sposób MVC, zmiana ta powinna być przejrzysta.

Ale na samym początku przekierowanie po uwierzytelnieniu kończy się niepowodzeniem. Po pomyślnym uwierzytelnieniu, to ma zwrócić wynik

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

zgadliście: zamiast „/ home/MyVirtualDirectory” przekierowanie idzie na „/ Home”. Co nie powiedzie się.

Brakuje czegoś, co należy skonfigurować. Co to jest?

Dzięki, wszystkie.

+0

Jak wygląda Twój "RegisterRoutes" w twoim pliku Global.asax? –

+0

Prawdopodobnie skonfigurowałeś usługi IIS niepoprawnie. To powinno być całkowicie przejrzyste. –

+0

@DarinDimitrov OK, jestem gotów w to uwierzyć. Czy aplikacje MVC muszą być ustawione inaczej niż aplikacje WebForms? –

Odpowiedz

3

W IIS wybierz swój katalog wirtualny i "Konwertuj na aplikację". Ponadto, jeśli używasz domyślnej trasy w swoim Global.asax powinien przeczytać coś takiego:

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

rozumowania: jeśli umieścić swoją aplikację MVC w podkatalogu z innej aplikacji IIS następnie rozważy root tej innej aplikacji zamiast katalogu głównego twojej aplikacji MVC. Jeśli to zachowanie, którego chcesz (mało prawdopodobne), musisz zmodyfikować swój Global.asax, aby wziąć to pod uwagę:

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

Dziękuję bardzo. Jednak według IIS mój katalog wirtualny jest już aplikacją. Mam IIS7.5, a pod widokiem domyślnej zawartości witryny sieci Web mój katalog wirtualny ma "typ" aplikacji. –

+0

Okay, kiedy napisałeś katalog wirtualny w swoim pytaniu, wziąłem to za możliwy wskaźnik, że nie określiłeś katalogu jako aplikacji. Możesz sprawdzić ustawienia puli aplikacji itp., Ale jak już wcześniej wspomniano, prawdopodobnie jest to raczej pytanie serverfault.com. –

+0

Znalazłem mój problem, który okazał się niepoprawnie wyprowadzonym adresem URL w instrukcji przekierowania. Twoja jest dobrą odpowiedzią na zadane pytanie - po prostu pomyliłem się co do tego, co się naprawdę działo. Dziękuję bardzo za odpowiedź! –

Powiązane problemy