ASP.NET MVC n'est pas de servir de document par défaut
J'ai un ASP.NET application MVC où la page par défaut devrait être index.html qui est en fait un fichier sur le disque.
Je peux naviguer jusqu'au fichier à l'aide de www.mydomain.com/index.html je sais que ça va être servi et existe, mais si j'utilise www.mydomain.com j'obtiens une erreur 404.
J'ai veillé à ce que le document par défaut est défini correctement dans IIS7 et j'ai même été jusqu'à commentées tous les itinéraires définis dans mon global.asax pour m'assurer de ne pas disposer d'un itinéraire à l'origine de ce problème.
Donc, pour résumer:
- J'ai un index.html fichier sur le disque et IIS7 est configuré pour utiliser index.html comme document par défaut.
- Si je supprime mon ASP.NET MVC de l'application et de laisser le index.html fichier est servi comme document par défaut comme prévu.
- Si je publie mes ASP.NET MVC de l'application puis l'index.html n'est pas servi par défaut du document.
Personne ne sait comment l'obtenir ASP.NET MVC pour servir de document par défaut?
- peut-être vous obtiendrez une meilleure réponse sur serverfault.com
- Ce n'est pas une IIS7, il est un ASP.NET MVC question. La valeur par défaut document a servi parfaitement lorsque vous n'utilisez pas ASP.NET MVC
- En fait, je suis confus pourquoi ce besoin d'être fait
- Assez simple raison pourquoi j'ai envie/besoin de faire cela. J'ai besoin d'ajouter des fonctionnalités à un site existant, qui est composé de des fichiers html statiques. Tout ce que je veux faire est d'ajouter des fonctionnalités à l'aide de ASP.NET MVC à une zone du site, mais laisser le reste comme il est.
- Je vais avoir le même problème. Avez-vous jamais trouver une solution?
- Il devrait être possible de remplacer la valeur par défaut de la page sans avoir à recompiler/redéployer. Je veux juste mettre une "sous contrat de maintenance' page up pour un peu de temps... Cela devrait être possible pour un Administrateur du Site pour le faire sans avoir besoin d'un dev??
Vous devez vous connecter pour publier un commentaire.
ASP.Net MVC de routage est contrôlée par le
Global.asax
/Global.asax.cs
fichiers. L'out-of-the-box de routage ressemble à ceci:Lorsque aucun chemin n'est spécifié, c'est à dire.
www.domain.tld/
, la route est la chaîne vide,""
. Par conséquent, le routage recherche un contrôleur de ce nom. En d'autres termes, il recherche un contrôleur sans nom à tous. Quand il ne trouve aucun contrôleur, il sert un404 NOT FOUND
page d'erreur.Pour résoudre le problème, soit la carte qui chemin à quelque chose de significatif ou bien ignorer que la route entièrement, en passant du contrôle de la index.html fichier:
J'ai eu un problème similaire avec un WebForms application. Dans votre site web.config assurez-vous que le resourceType attribut de la StaticFile gestionnaire sous système.le serveur web est configuré pour Soit.
routes.IgnoreRoute("");
méthode ne fonctionne pas pour moi. Ce n'. Merci.J'ai trouvé un moyen de contourner cela. Si vous voulez index.html pour être à la racine de votre application MVC (j'.e à côté de votre contrôleur/modèle/vue/appdata etc dossiers), vous pouvez le faire:
Dire que vous avez
home.html
,aboutus.html
etcontactus.html
.index.html
aboutus.html
index.html
sont maintenant au même niveau que mon fichier CSPROJ.Désolé pour ressusciter cette maman, mais je ne crois pas que cette question n'a jamais été un défaut de document de problème. En fait, vous ne voulez probablement pas à avoir un document par défaut défini comme beaucoup d'autres answerers l'ai dit.
Eu ce problème aussi, un problème similaire. la cause de mon problème était que le Pool d'Applications pour le site a été mis à utiliser .NET Framework v2 et doit avoir été mis à la v4. une fois que j'ai changé, il est chargé correctement.
Vous pouvez ignorer la route dans votre application MVC et laissez-IIS servir.
Je soupçonne que vous avez ajouté index.html vous-même que cette extension serait inconnu de la mvc.
Par défaut de votre page d'index en mvc //domaine/home/index et est physiquement index.aspx.
Si vous appelez votre domaine à l'aide de //domaine puis le moteur de routage assumera /home/index.aspx et pas index.html.