使用 RouteExistingFiles 阻止对现有文件的访问,即使不存在路由

2023-12-08

在 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 core 则处理)。将要拒绝访问的所有文件放入一个文件夹中,然后将 Web.config 放入该文件夹中:

<configuration>
  <system.web>
    <authorization>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

这将阻止 IIS 和 ASP.NET 直接提供这些文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RouteExistingFiles 阻止对现有文件的访问,即使不存在路由 的相关文章

随机推荐