我有一个ASP.NET MVC应用程序,默认页面应该是index.html,它是磁盘上的实际文件.
我可以使用www.mydomain.com/index.html浏览到该文件,因此我知道它将被提供并存在,但如果我使用www.mydomain.com,我会得到404.
我确保在IIS7中正确设置了默认文档,我甚至已经注释掉了我的global.asax中定义的所有路由,以确保我没有导致此问题的路由.
总结一下:
有谁知道如何让ASP.NET MVC提供默认文档?
piu*_*ius 29
ASP.Net MVC路由由Global.asax/ Global.asax.csfiles 控制.开箱即用的路由如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
}
没有指定路径时,即.www.domain.tld/,路线是空字符串,"".因此,路由查找具有该名称的控制器.换句话说,它寻找一个完全没有名字的控制器.当它找不到这样的控制器时,它会提供一个404 NOT FOUND错误页面.
要解决此问题,请将该路径映射到有意义的路径,或者完全忽略该路由,将控制权传递给index.html文件:
routes.IgnoreRoute("");
gri*_*egs -3
我怀疑您自己添加了index.html,因为mvc 框架不知道该扩展。
mvc 中的默认索引页是 //domain/home/index ,物理上是index.aspx。
如果您使用 //domain 调用您的域,则路由引擎将假定 /home/index.aspx 而不是 index.html。