2009-03-12 8 views
5

Sto tentando di creare un'applicazione MVC come applicazione secondaria alla mia applicazione Web Asp.Net standard. Entrambi questi progetti sono all'interno della stessa soluzione. Mentre l'applicazione madre sembra andare bene, ho problemi a far funzionare la sotto-applicazione. Dopo aver massaggiato i miei due web.configs, sono stato in grado di ottenere il runtime Asp.Net per accettare le configurazioni, ma non sono riuscito a navigare su nessuna delle pagine/controller nell'applicazione MVC, inclusa la root del sub -application ("http://RootSite/SubApplicationName/"). Ottengo continuamente 404.Esecuzione di un'applicazione MVC come applicazione secondaria?

In realtà, ottengo una risposta quando si va all'URL "http://RootSite/SubApplicationName/Home/Index/". Mi reindirizza a index.aspx in quella cartella, e lancia questo errore:

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx

Il sub-application in IIS (7) è impostato abbastanza semplice: è impostato per essere eseguito nello stesso pool di applicazioni come il app principale, che esegue Asp.Net 2.0 in modalità di integrazione.

Il mio sospetto è che ho qualcosa nel web.configs che lo sta buttando via. Ci sono cose che riguardano, ad esempio, moduli HTTP o moduli di autorizzazione URL, ecc., Che dovrei confermare che non stanno intralciando MVC?

Inoltre, nel file global.asax.cs, la route predefinita deve essere diversa? Per impostazione predefinita, il parametro URL passato a routes.MapRoute è:

"{controller}/{action}/{id}" 

Qualora sia preceduto dal nome del sub-applicazione, in questo modo?

"SubApplicationName/{controller}/{action}/{id}" 

Ho tentato una modifica del genere, ma non ha risolto le cose.

Tutte le idee sono molto apprezzate. Inoltre, le informazioni generali sulla configurazione di un'applicazione Web MVC come applicazione secondaria sarebbero grandiose.

Grazie.

risposta

1

Ho fatto qualcosa di simile, comunque non uguale, ho dovuto caricare le viste da una dll separata. Nel mio caso si trattava di una libreria di classi, non di un'altra app Web, ma avrebbe dovuto funzionare allo stesso modo per quanto ne so.

La prima cosa che devi fare è creare un VirtualPath Provider per dire al motore di routing come cercare i tuoi contenuti nelle viste delle sottoapplicazioni. Un grande spiegazione di come fare questo può essere trovato qui:

http://www.wynia.org/wordpress/2008/12/05/aspnet-mvc-plugins/

Sono sicuro che vi consentiranno di iniziare;)

+0

Grazie! Lo leggerò e ti farò sapere se ha funzionato per me. – Moskie

+0

All'inizio sembra un po 'complicato, ma quel post è di qualità e puoi scaricare la soluzione di Visual Studio in modo da poter giocare;) – antonioh

+0

Non so come descrive il mio problema. Quello che voglio è che un'applicazione web Asp.Net standard abbia una sotto-applicazione che è un'app MVC. Quello che sta facendo è che un'app MVC fa riferimento a una DLL per utilizzare un'altra dll MVC. Ma questo non affronta il rapporto che sto trattando qui ... Non penso. – Moskie

0

Assicurarsi che non hai fatto eventuali errori di ortografia nel i nomi delle tue directory Views. Stavo ricevendo lo stesso messaggio di errore e dopo 30 minuti di grattacapo mi sono reso conto che avevo sbagliato a digitare il nome della cartella per una delle mie viste. L'IDE non lo ha rilevato in alcun modo significativo (sarebbe stato bello se mi avesse detto esplicitamente che il percorso verso la vista che stavo riferendo non era corretto - "non trovato" potrebbe significare cose diverse).

0

L'applicazione secondaria non è direttamente compatibile con l'applicazione Web MVC. devi scrivere molto codice hacked in global.asax. Utilizza il sottodominio piuttosto che l'applicazione secondaria.

Problemi correlati