2010-01-12 17 views
8

Próbuję uruchomić mały projekt ASP.NET w podfolderze mojego hostingu. Moja domena to www.gorangligorin.com, ale chcę uruchomić moją aplikację na stronie www.gorangligorin.com/testmvc. Program ASP.NET MVC działa bez żadnych problemów na najwyższym poziomie, ale nie w podfolderach.Jak hostować witrynę ASP.NET MVC w podfolderze

Serwer to mówi (linia 58 jest zabarwiona na czerwono):

Line 56:    ASP.NET to identify an incoming user. 
Line 57:  --> 
Line 58:  <authentication mode="Forms"> 
Line 59:  <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
Line 60:  </authentication> 

Co mogę zrobić, aby tę pracę internetowej ASP.NET MVC? To nie jest hostowane na moim komputerze, więc nie mam dostępu do konfiguracji IIS.

+1

Nie można uczynić testmvc katalogiem wirtualnym? –

+0

Zrobiłem katalog wirtualny i nareszcie działa. Przynajmniej pierwsza strona, podstrony nadal nie działają. Wygląda na to, że Routing MVC nie działa, ponieważ mówi "Nie można znaleźć zasobu". Tak jak próbowałem uzyskać dostęp do podfolderu, który nie istnieje. Czy są jakieś inne ustawienia, które muszę zmienić? – gligoran

+0

Naprawiono. Zrobiłem głupią literówkę, pisząc niestandardowe trasy, w wyniku czego nie działało :) – gligoran

Odpowiedz

3

Czy utworzyłeś aplikację ASP.NET w IIS dla tego katalogu? W przeciwnym razie ASP.NET uważa, że ​​głównym źródłem twojego serwera jest katalog główny twojej aplikacji, a nie ten w podkatalogu.

+0

Jak to zrobić? – gligoran

+0

Potrzebujesz dostępu do usług IIS. –

+0

W pewnym sensie to było rozwiązanie. Kiedy utworzyłem katalog wirtualny, istniało pole wyboru, jeśli chciałem utworzyć w nim aplikację asp.net. – gligoran

1

Czy próbowałeś następujących sposobów?

<forms loginUrl="~/testmvc/Account/LogOn" timeout="2880" /> 

Tylda (~) jest skrótem dla właściwości HttpRuntime.AppDomainAppVirtualPath, który odnosi się do korzeni, a nie stosowania wirtualnego katalogu głównego serwera.

HttpRuntime.AppDomainAppVirtualPath 

http://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath.aspx

Ponadto, co jest aż gwiazdka?

Line 58:  <authentication mode="Forms">* 
+0

To nie pomaga w żaden sposób. Próbowałem z i bez ~, z lub bez/testmvc przed/account/logon, próbowałem konta/logowania i testmvc/account/logon (bez/infront). – gligoran

+0

Nie bardzo wiem, w jaki sposób powstała gwiazdka, ale nie ma jej na stronie Web.Config ani na stronie błędu. Edytowałem oryginalny wpis. – gligoran

5

Ustawienia aplikacji root w IIS mogą mieć wpływ na aplikacje dla dzieci. W celu uniknięcia ustawienia korzeniowych z rozmnożeniowego, wstawić następujący kod w pliku web.config root:

<location path="." inheritInChildApplications="false"/> 

nadzieję, że to pomaga.

+0

Próbowałem, ale to nie pomogło wiele. – SwissCoder

+0

Działa to, jeśli jest poprawnie skonfigurowany ... zobacz http://stackoverflow.com/a/18217352/1339704 – Soenhay

1

Są to głównie dwie przyczyny tego problemu:

  1. Jeśli nie skonfigurowano aplikacji ASP.NET w IIS jak w ustawienie tego katalogu wirtualnego jako aplikacja

  2. dwóch lub wielu Web.Config istnieje w Twojej witrynie. Ponieważ masz web.config na poziomie głównym i drugi web.config w podkatalogu. Po prostu usuń ten plik web.config, jeśli jest taki sam. lub wróć do 1 i rozwiązać go odpowiednio w IIS

    A ponieważ dodano podkatalog z korzenia, powiedziałbym, że trzeba zmienić swoje trasy w pliku Global.asax do obsługi routingu

Url = "testmvc/{controller}/{action}/{id}"

Powiązane problemy