我正在编写ASP.NET Core资源过滤器,并且我想在OnResourceExecuting方法中禁用对某些控制器/动作的处理。
在Microsoft.AspNetCore.Mvc.Filters.ResourceExecutingContext类中找不到任何用于获取控制器名称和动作名称的api。
有人有什么想法吗?谢谢!
答案 0 :(得分:3)
ResourceExecutingContext
包含一个ActionDescriptor
属性(docs)。
这是Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor
或Microsoft.AspNetCore.Mvc.RazorPages.PageActionDescriptor
的基类。
因此,当将其转换为ControllerActionDescriptor
(docs)时,可以访问ControllerName
和ActionName
属性。
if(resourceContext.ActionDescriptor is ControllerActionDescriptor controllerDescriptor)
{
var controllerName = controllerDescriptor.ControllerName;
}