web-dev-qa-db-fra.com

Définissez index.html comme page par défaut

J'ai une application ASP.NET vide et j'ai ajouté un fichier index.html. Je veux définir le index.html comme page par défaut pour le site.

J'ai essayé de faire un clic droit sur le fichier index.html et de le définir comme page de démarrage, et lorsque je l'exécute, l'url est: http://localhost:5134/index.html mais ce que je veux vraiment c'est que quand je tape: http://localhost:5134, il devrait charger la page index.html.

ma configuration d'itinéraire:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
30
vir

J'ai ajouté une instruction à ma configuration d'itinéraire pour ignorer les itinéraires vides et cela a résolu mon problème.

routes.IgnoreRoute(""); 
31
vir

Comme @vir a répondu, ajoutez routes.IgnoreRoute(""); à RegisterRoutes(RouteCollection routes) que vous devriez trouver dans RouteConfig.cs par défaut.

Voici à quoi pourrait ressembler la méthode:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

La raison en est que ASP.NET MVC prend en charge la gestion des URL et par défaut le routage est tel que toutes les URL sans extension sont contrôlées par le gestionnaire d'URL sans extension défini dans web.config.

Il y a une explication détaillée ici .

21
Alex Sanséau

En supposant que l'application Web s'exécute dans IIS, la page par défaut peut être spécifiée dans un fichier web.config:

<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="index.html" />
        </files>
    </defaultDocument>
</system.webServer>
7
Boris Lipschitz

Créez un nouveau contrôleur DefaultController. En action d'index, j'ai écrit une redirection de ligne:

return Redirect("~/index.html")

Dans RouteConfig.cs, changez controller = "Default" pour l'itinéraire.

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
        );
5
vickey1611

Une solution est celle-ci:

 //routes.MapRoute(
 //           name: "Default",
 //           url: "{controller}/{action}/{id}",
 //           defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
 //      );

Je veux dire, commenter ou supprimer ce code dans votre projet MVC pour éviter le comportement par défaut lorsque vous effectuez la demande initiale http://localhost:5134/.

Le fichier index.html doit se trouver à la racine de votre solution.

J'espère que cela t'aides! Ça marche pour moi.

3
sergio