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