我正在使用Asp.Net MVC并设置SQL Server。我有一个控制器。我不想使用此控制器。
如何禁用控制器而不删除它?
答案 0 :(得分:1)
您可以使用从ActionFilterAttribute继承的自定义操作过滤器,该过滤器将检查Web.config应用程序设置中的键中是否存在控制器的名称,然后它将通过返回return 404或重定向到另一个页面来进行处理
然后将新的自定义过滤器注释添加到基本控制器或要管理它们的所有控制器(禁用/启用)。
答案 1 :(得分:1)
您可以在RouteConfig文件中添加忽略路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("Account/");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Student", action = "Index", id = UrlParameter.Optional
}
);
}
}
答案 2 :(得分:0)
一种实现此目的的方法是更改控制器类上的access modifier。
使用Visual Studio 2015创建的基本ASP.NET MVC项目,将AccountController
类从以下位置更改:
public class AccountController : Controller
收件人:
class AccountController : Controller
(即,将课程设为私有)
导航到http://localhost:58743/Account/Register
时会导致404返回浏览器。
答案 3 :(得分:0)
这是我为禁用我的一个控制器使用Policy
而采取的措施:
将以下代码添加到控制器:
[Authorize(Policy = "Disabled")]
public class MyController : Controller
然后在startup.cs中:
services.AddAuthorization(options =>
{
options.AddPolicy("Disabled", policy => policy.RequireClaim(ClaimTypes.Role, "Disabled"));
});