routeconfig route net mvc examples asp asp.net-mvc asp.net-mvc-routing

asp.net mvc - route - Establecer index.html como la página por defecto



route controller c# (5)

Tengo una aplicación ASP.NET vacía y agregué un archivo index.html. Quiero establecer el index.html como página predeterminada para el sitio.

Intenté hacer clic derecho en index.html y establecer como página de inicio, y cuando lo ejecuto, la url es: http://localhost:5134/index.html pero lo que realmente quiero es que cuando escribo: http://localhost:5134 , debería cargar la página index.html.

mi configuración de ruta:

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 } ); } }


Agregué una instrucción a mi configuración de ruta para ignorar las rutas vacías y eso resolvió mi problema.

routes.IgnoreRoute("");


Como respondió @vir, agregue routes.IgnoreRoute(""); a RegisterRoutes(RouteCollection routes) que debería encontrar en RouteConfig.cs de forma predeterminada.

Así es como podría verse el método:

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 razón es que ASP.NET MVC asume la administración de URL y, de forma predeterminada, el enrutamiento es tal que todas las URL sin extensión están controladas por el controlador de URL sin extensión definido en web.config.

Hay una explicación detallada here .


Crear un nuevo controlador DefaultController. En la acción de índice, escribí una línea de redireccionamiento:

return Redirect("~/index.html")

En RouteConfig.cs, cambie el controlador = "Predeterminado" para la ruta.

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


Suponiendo que la aplicación web se ejecuta en IIS, la página predeterminada se puede especificar en un archivo web.config:

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


Una solución es esta:

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

Quiero decir, comentar o eliminar este código en su proyecto MVC para evitar el comportamiento predeterminado cuando realiza la solicitud inicial http://localhost:5134/ .

El index.html debe estar en la raíz de su solución.

¡Espero que esto ayude! Esto funciona para mi.