I have an empty ASP.NET application and I added an index.html file. I want to set the index.html as default page for the site.
I have tried to right click on the index.html and set as start page, and when I run it the url is: http://localhost:5134/index.html
but what I really want is that when I type: http://localhost:5134
, it should load the index.html page.
my route config:
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 }
);
}
}
Default Homepage The index. html page is the most common name used for the default page shown on a website if no other page is specified when a visitor requests the site.
The default file name for a website's home page (INDEX. HTM is also used). Appropriately named, the home page serves as an index to the main pages on the site, each of which can link to any number of other pages and so on.
I added an instruction to my route config to ignore empty routes and that solved my problem.
routes.IgnoreRoute("");
As @vir answered, add routes.IgnoreRoute("");
to RegisterRoutes(RouteCollection routes)
which you should find in RouteConfig.cs by default.
Here's what the method could look like:
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 }
);
}
The reason is that ASP.NET MVC takes over URL management and by default the routing is such that all extensionless URLs are controlled by the extensionless Url handler defined in web.config.
There's a detailed explanation here.
Assuming the web app is running in IIS, the default page can be specified in a web.config file:
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
Create a new controller DefaultController. In index action, i wrote one line redirect:
return Redirect("~/index.html")
In RouteConfig.cs, change controller="Default" for the route.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
One solution is this one:
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// );
I mean, comment or delete this code in your MVC project to avoid the default behavior when you make the initial request http://localhost:5134/
.
The index.html must be in the root of your solution.
Hope this helps! It works for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With