为自己的MVC网站创建Web应用程序时,为什么要在我的IIS配置中创建默认文档时,例如Login.cshtml
自定义名称?
我认为通过MVC路由,不需要在IIS上定义任何默认文档。或者我们假设在每个控制器下都有一个index.cshtml
页面?
答案 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());
}
}
如果在启动时与正确的配置结合使用,则可确保在网站中访问的任何页面都将请求重定向到登录页面,并在登录时重定向回请求的页面。这样,当用户登录时,“默认”页面并不总是登录页面(当用户登录时没有多大意义)。