2009-03-12 9 views
5

Je tente de créer une application MVC en tant que sous-application à mon application Web Asp.Net standard. Ces deux projets sont dans la même solution. Bien que l'application parente semble fonctionner correctement, j'ai de la difficulté à faire fonctionner la sous-application. Après un massage de mes deux web.configs, j'ai réussi à faire en sorte que le runtime Asp.Net accepte les configurations, mais j'ai été incapable de naviguer sur l'une des pages/contrôleurs de l'application MVC, y compris la racine du sous -application ("http://RootSite/SubApplicationName/"). Je reçois continuellement des 404.Exécution d'une application MVC en tant que sous-application?

En fait, j'obtiens une réponse en allant à l'url "http://RootSite/SubApplicationName/Home/Index/". Il me redirige vers index.aspx dans ce dossier, et jette cette erreur:

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

Le sous-application dans IIS (7) est mis en place assez simple: il est mis à courir dans le même pool d'applications comme application parent, qui exécute Asp.Net 2.0 en mode d'intégration. Je soupçonne que j'ai quelque chose dans le web.configs qui le rejette. Y at-il des choses concernant, disons, HTTPModules ou des modules d'autorisation d'URL, etc., que je devrais confirmer ne gênent pas MVC?

De même, dans le fichier global.asax.cs, la route par défaut doit-elle être différente? Par défaut, le paramètre url est passé à routes.MapRoute:

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

Au cas où il être précédé par le nom de la sous-application, comme si? J'ai tenté une modification comme celle-ci, mais elle n'a pas résolu les problèmes.

Toutes les idées sont très appréciées. En outre, des informations générales sur la configuration d'une application Web MVC en tant que sous-application seraient excellentes.

Merci.

Répondre

1

J'ai fait quelque chose de similaire, mais pas la même chose, j'ai dû charger des vues à partir d'une DLL séparée. Dans mon cas, c'était une bibliothèque de classe, pas une application web différente, mais cela devrait fonctionner de la même manière que je le sache. La première chose à faire est de créer un fournisseur VirtualPath pour indiquer au moteur de routage comment rechercher votre contenu dans les vues de sous-applications. Une grande explication de la façon de procéder se trouve ici:

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

Je suis sûr que vous initieront;)

+0

Merci beaucoup! Je vais le lire et vous laisser savoir si cela a fonctionné pour moi. – Moskie

+0

Il semble un peu difficile au début, mais ce poste est de qualité et vous pouvez télécharger la solution Visual Studio de sorte que vous serez en mesure de jouer autour;) – antonioh

+0

Je ne pas ce qu'il décrit résout mon problème. Ce que je veux, c'est une application Web standard Asp.Net dont la sous-application est une application MVC. Ce qu'il fait, c'est qu'il a une application MVC référence une DLL pour utiliser une autre DLL MVC. Mais cela ne concerne pas la relation dont je parle ici ... Je ne pense pas. – Moskie

0

Assurez-vous que vous ne l'avez pas fait de fautes d'orthographe dans la les noms de vos répertoires Views. Je recevais le même message d'erreur et après 30 minutes de grattage de la tête j'ai réalisé que j'avais mal orthographié le nom du dossier pour l'une de mes vues. L'IDE ne l'a pas pris en compte de manière significative (c'est-à-dire qu'il aurait été bien de me dire explicitement que le chemin vers la vue que je référençais n'était pas correct - "non trouvé" pourrait signifier plusieurs choses différentes).

0

La sous-application ne s'applique pas directement à l'application Web MVC. vous devez écrire beaucoup de code piraté dans global.asax. Utilisez un sous-domaine plutôt qu'une sous-application.

Questions connexes