2009-08-31 5 views
0

J'ai un site Web MVC que j'ai développé et je souhaite maintenant passer à mon service d'hébergement partagé. Cependant, j'ai rencontré un petit problème: mon fournisseur n'autorise qu'une seule application au niveau racine. Lorsque j'ai créé et appliqué en tant que sous-application de mon application racine, mon application MVC ne fonctionnait pas. J'obtiendrais une "ressource non trouvée" ou, après avoir ajusté mes routes pour contenir le nom du sous-dossier ", une erreur" il n'y a pas d'itinéraires correspondants "Comment déplacer un site ASP.NET MVC de l'application racine vers un dossier de sous-application?

Alors, ma question est: que dois-je faire? Comment puis-je ajuster mes itinéraires? Le fait que mon application racine ne soit pas une application MVC?

Répondre

1

D'abord vous ne faites pas changer les noms des routes, ils devraient être app relatif.

Deuxièmement, vous rencontrerez probablement des problèmes d'héritage de web.config (c.-à-d. Que votre web.config dans l'application mvc hérite de tout de web.config dans la racine).

Vous pouvez arrêter cet héritage, mais vous aurez besoin de modifier les applications de racine web.config pour inclure une balise de localisation autour de tout:

<configuration> 
    <configSections> 
    ... all your custom config sections here (if any) ... 
    </configSections> 
    <location path="." inheritInChildApplications="false"> 
    ... all your config stuff here (ie, system.web, connectionStrings) ... 
    </location> 
</configuration> 

Qu'est-ce que cela ne se dit, appliquer ces paramètres uniquement sur le chemin '.', la période correspond à l'emplacement actuel, puis inheritInChildApplications indique 'n'hérite pas de ces paramètres dans les applications enfants'.

Vous pouvez même placer des éléments en dehors de la balise d'emplacement que vous souhaitez partager avec des applications enfants.


Edit: Notez cela ne peut pas résoudre vos problèmes (ou du moins pas tous), certains peuvent être parce que vous avez fait des hypothèses que l'application fonctionnera à la racine (principalement en ce qui concerne les chemins).

+0

Il est bon de savoir que les routes sont relatives à l'application. J'espérais que ce serait le cas. Je n'ai actuellement pas de web.config dans mon dossier racine. Pensez-vous que cela pourrait encore être le problème? Je vais essayer ce que tu proposes de toute façon. Merci! –

+0

@meandmycode: Je ne pense pas que j'ai des problèmes avec les chemins. J'ai fait le tout entièrement qualifié. –

+0

Utilisez-vous la syntaxe tilde pour décrire l'application relative? Par exemple: ~/quelque chose vs/quelque chose – meandmycode

0

Peu importe que votre racine ne soit pas configurée en tant qu'application MVC, mais vous devez vous assurer que Le répertoire/bin/a au moins les assemblys MVC, s'ils ne sont pas dans le GAC Essayez d'utiliser Phil Haack's route debugger pour voir s'il y a des problèmes avec les routes Cela pourrait nous donner plus d'informations sinon vous aider à résoudre le problème!

+0

Merci pour l'astuce sur le débogueur. –

+0

pas de problème - j'espère que ça aide! –

Questions connexes