2010-01-12 18 views
8

Sto provando a eseguire un piccolo progetto ASP.NET in una sottocartella del mio hosting. Il mio dominio è www.gorangligorin.com, ma voglio eseguire la mia app in www.gorangligorin.com/testmvc. ASP.NET MVC viene eseguito senza problemi al livello principale, ma non in sottocartelle.Come ospitare il sito MVC ASP.NET in una sottocartella

Il server dice questo (linea 58 è di colore rosso):

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> 

Che cosa posso fare per fare questo lavoro sito ASP.NET MVC? Questo non è ospitato sul mio computer, quindi non ho accesso alle configirazioni di IIS.

+1

Non è possibile rendere testmvc una directory virtuale? –

+0

Ho creato una directory virtuale e finalmente funziona. Almeno la prima pagina, le sottopagine non funzionano ancora. Sembra che MVC Routing non funzioni, perché dice "La risorsa non può essere trovata". Come se stessi cercando di accedere a una sottocartella che non esiste. C'è qualche altra impostazione che devo cambiare? – gligoran

+0

corretto. Ho fatto uno stupido errore di battitura nella scrittura di percorsi personalizzati e non ha funzionato :) – gligoran

risposta

3

Hai creato un'applicazione ASP.NET in IIS per questa directory? In caso contrario, ASP.NET pensa che la radice del tuo server sia la radice della tua applicazione, non quella nella sottodirectory.

+0

Come faccio a fare questo? – gligoran

+0

È necessario l'accesso a IIS. –

+0

In un modo questa era la soluzione. Quando ho creato una directory virtuale, c'era una casella di controllo se volevo creare un'applicazione asp.net al suo interno. – gligoran

1

Hai provato quanto segue?

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

La tilde (~) è una scorciatoia per la proprietà HttpRuntime.AppDomainAppVirtualPath, che si riferisce alla radice dell'applicazione virtuale, non la radice del server web.

HttpRuntime.AppDomainAppVirtualPath 

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

Inoltre, qual è l'asterisco?

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

Questo non aiuta in alcun modo. Ho provato con e senza ~, con o senza/testmvc di fronte a/account/accesso, ho provato account/logon e testmvc/account/logon (senza/infront). – gligoran

+0

Non so davvero come sia arrivato l'asterisco, ma non si trova nel Web.Config o nella pagina di errore. Ho modificato il post originale. – gligoran

5

Le impostazioni dell'applicazione root in IIS possono influire sulle app per bambini. Al fine di evitare che le impostazioni di radice da propagare, inserire il seguente codice nel tuo web.config root:

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

Spero che questo aiuti.

+0

L'ho provato, ma non è stato di grande aiuto. – SwissCoder

+0

Funziona se è impostato correttamente ... vedi http://stackoverflow.com/a/18217352/1339704 – Soenhay

1

ci sono principalmente due ragioni per questo problema:

  1. Se non è stato configurato l'applicazione asp.net in IIS come in quella di impostare la directory virtuale come un'applicazione

  2. Due o molti Web.Config esiste sul tuo sito. Dato che hai il web.config al livello root e il secondo web.config nella sottodirectory. Quindi rimuovi quel web.config se è lo stesso. o tornare a 1 e risolvere di conseguenza in IIS

    E dal momento che si è aggiunto una sottodirectory dalla radice, direi che è necessario cambiare i percorsi nel file Global.asax, per gestire l'instradamento

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

Problemi correlati