在ASP.net MVC 2中,我可以使用routes.RouteExistingFiles = true;
通过路由系统发送所有请求,即使它们存在于文件系统中。
通常情况下,最终会遇到"{controller}/{action}/{id}"
路由并因无法找到控制器而引发异常。
我不想使用那条路线(我只有几个网址并且它们是专门映射的),但我仍然希望阻止访问文件系统。
基本上我想使用IgnoreRoute白名单页面。有内置的方法吗?
我目前的做法是仍然有一条路线"{*anything}"
,当它被击中时会产生一个404,但我只是想知道某些东西是否已内置?
答案 0 :(得分:7)
这是ASP.NET MVC应用程序中Web.config授权的少数有效用途之一。 :)
我建议将RouteExistingFiles设置为false(这样路由和MVC管道不会处理这些请求,IIS和ASP.NET核心会这样做)。将您要拒绝访问的所有文件放入单个文件夹,然后将Web.config拖放到该文件夹中:
<configuration>
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
这将阻止IIS和ASP.NET直接提供这些文件。