📜  如何在 mvc 中禁用路由 (1)

📅  最后修改于: 2023-12-03 15:38:21.592000             🧑  作者: Mango

如何在 MVC 中禁用路由

在 MVC 中,路由是将 URL 映射到控制器和操作方法的机制。有时候,我们需要禁用某些路由,比如禁止访问某些敏感接口。

本文将介绍在 MVC 中禁用路由的几种方法。

1. 在 RouteConfig.cs 中设置忽略路由规则

如果你想完全禁用某个路由,可以在 RouteConfig.cs (在 App_Start 文件夹下)中添加一个忽略规则。

routes.IgnoreRoute("{*path}", new { path = @"some/route/to/ignore" });

这里的 {*path} 表示匹配任何路径,path 参数是要忽略的路由路径。如果要忽略多个路由路径,可以使用 | 分隔多个路径。

routes.IgnoreRoute("{*path}", new { path = @"some/route/to/ignore|another/route/to/ignore" });
2. 在控制器类或操作方法上添加特性路由配置

如果你只想针对某个控制器类或操作方法禁用路由,可以在类或方法上添加 [Route] 特性,并设置为空字符串。

[Route("")]
public class MyController : Controller
{
    [Route("")]
    public ActionResult Index()
    {
        return View();
    }
}

这里的 [Route("")] 表示路由前缀为空字符串,将会匹配根路径。

3. 在 Web.config 中设置忽略路由的文件夹

如果你想禁止访问某个文件夹下的所有路由,可以在 Web.config 中添加以下配置。

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
    ...
  </modules>

  <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    ...
  </handlers>

  <security>
    <requestFiltering>
      <hiddenSegments>
        <add segment="ignored_folder" />
      </hiddenSegments>
    </requestFiltering>
  </security>
</system.webServer>

这里的 <add segment="ignored_folder" /> 表示要忽略的文件夹名为 "ignored_folder"。

以上就是在 MVC 中禁用路由的几种方法,根据实际需要选择适合自己的方法即可。