我有一个空的 ASP.NET 应用程序,并添加了一个 index.html 文件。我想将 index.html 设置为网站的默认页面。
我尝试右键单击index.html并将其设置为起始页,当我运行它时,网址是:
http://localhost:5134/index.html
但我真正想要的是当我输入:http://localhost:5134
时,它应该加载索引.html 页面。
我的路线配置:
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 }
);
}
}
我在路线配置中添加了一条指令来忽略空路线,这解决了我的问题。
routes.IgnoreRoute("");
正如 @vir 回答的那样,将
routes.IgnoreRoute("");
添加到 RegisterRoutes(RouteCollection routes)
,默认情况下您应该在 RouteConfig.cs 中找到它。
该方法可能如下所示:
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 }
);
}
原因是 ASP.NET MVC 接管 URL 管理,默认情况下,路由是所有无扩展 URL 都由 web.config 中定义的无扩展 URL 处理程序控制。
这里有详细的解释。
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
return Redirect("~/index.html")
在RouteConfig.cs中,更改路由的controller=“Default”。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// );
我的意思是,在您的 MVC 项目中注释或删除此代码,以避免在发出初始请求时出现默认行为
http://localhost:5134/
。index.html 必须位于解决方案的根目录中。
希望这有帮助!它对我有用。