我是否需要在IIS上为MVC应用程序提供默认文档?

时间:2018-03-20 11:14:51

标签: c# asp.net-mvc model-view-controller asp.net-mvc-routing iis-8

为自己的MVC网站创建Web应用程序时,为什么要在我的IIS配置中创建默认文档时,例如Login.cshtml自定义名称?

我认为通过MVC路由,不需要在IIS上定义任何默认文档。或者我们假设在每个控制器下都有一个index.cshtml页面?

1 个答案:

答案 0 :(得分:0)

视图由MVC提供,而不是由IIS提供。 MVC控制哪个URL映射到哪个操作方法,它是返回视图的操作方法。

只要MVC中有一条路由可以提供URL“”(默认的http://example.com/路径),就不需要在IIS中映射默认文档。请注意,Visual Studio MVC模板中的Default路由处理此情况,因此只要您不更改它,您就会受到保护。

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

此外,将Login设为默认页面非常不寻常。如果您希望只能通过登录访问整个网站,请将AuthorizeAttribute注册为全局过滤器。

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
        filters.Add(new HandleErrorAttribute());
    }
}

如果在启动时与正确的配置结合使用,则可确保在网站中访问的任何页面都请求重定向到登录页面,并在登录时重定向回请求的页面。这样,当用户登录时,“默认”页面并不总是登录页面(当用户登录时没有多大意义)。