2009-03-12 18 views
5

Estoy intentando crear una aplicación MVC como una sub-aplicación para mi aplicación Asp.Net Web estándar. Ambos proyectos están dentro de la misma solución. Si bien la aplicación principal parece estar funcionando bien, tengo problemas para hacer que funcione la sub-aplicación. Después de un poco de masaje de mis dos web.configs, pude obtener el tiempo de ejecución de Asp.Net para aceptar las configuraciones, pero no he podido navegar a ninguna de las páginas/controladores en la aplicación MVC, incluida la raíz del sub -aplicación ("http://RootSite/SubApplicationName/"). Continuamente obtengo 404's.Ejecutando una aplicación MVC como una sub-aplicación?

En realidad, obtengo una respuesta cuando voy a la url "http://RootSite/SubApplicationName/Home/Index/". Me vuelve a dirigir a Index.aspx en esa carpeta, y lanza este error:

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

La sub-aplicación en IIS (7) está configurado bastante sencillo: está configurado para ejecutarse en el mismo grupo de aplicaciones como el aplicación principal, que ejecuta Asp.Net 2.0 en modo de integración.

Mi sospecha es que tengo algo en la web.configs que lo está tirando. ¿Hay cosas con respecto a, digamos, módulos HTTP o módulos de autorización de URL, etc., que debo confirmar que no están obstaculizando MVC?

Además, en el archivo global.asax.cs, ¿la ruta predeterminada debe ser diferente? Por defecto, el parámetro de URL que a routes.MapRoute es:

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

en caso de que ir precedido por el nombre de la sub-aplicación, al igual que?

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

Intenté un cambio así, pero no solucionó las cosas.

Todas las ideas son muy apreciadas. Además, la información general sobre la configuración de una aplicación web MVC como una sub-aplicación sería genial.

Gracias.

Respuesta

1

Hice algo similar, sin embargo no es lo mismo, tuve que cargar vistas desde un dll separado. En mi caso, era una biblioteca de clases, no una aplicación web diferente, pero debería funcionar igual, hasta donde yo sé.

Lo primero que debe hacer es crear un proveedor de VirtualPath para indicarle al motor de enrutamiento cómo buscar sus cosas en las vistas de subaplicaciones. Una gran explicación de cómo hacer esto se puede encontrar aquí:

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

Estoy seguro de que le ayudará a empezar;)

+0

¡Gracias! Leeré eso y te dejaré saber si funcionó para mí. – Moskie

+0

Parece un poco complicado al principio, pero esa publicación es de calidad y puede descargar la solución de Visual Studio para que pueda jugar;) – antonioh

+0

No sé lo que él describe resuelve mi problema. Lo que quiero es una aplicación web Asp.Net estándar que tenga una sub-aplicación que sea una aplicación MVC. Lo que está haciendo es que tiene una aplicación MVC que hace referencia a una DLL para hacer uso de otra MVC dll. Pero esto no aborda la relación que estoy tratando aquí ... No creo. – Moskie

0

Asegúrese de que usted no ha cometido ningún error de ortografía en el nombres de sus directorios de Vistas. Recibí el mismo mensaje de error y, después de 30 minutos de scratching, me di cuenta de que había escrito mal el nombre de la carpeta de una de mis vistas. El IDE no entendió esto de manera significativa (es decir, hubiera sido bueno si me hubiera dicho explícitamente que el camino a la vista al que estaba haciendo referencia no era correcto, "no encontrado" podría significar algunas cosas diferentes).

0

La aplicación secundaria no se integra directamente a la aplicación web MVC. tienes que escribir un montón de código pirateado en global.asax. Use subdominio en lugar de subaplicación.

Cuestiones relacionadas