Asp.net
從 AuthorizationHandlerContext 對象獲取控制器和動作名稱
AuthorizationHandlerContext context嗨,我有一個接受參數的自定義需求處理程序當我調試時,我可以看到上下文對象包含 Context.Resources.ActionDescription.ActionName
但是在編寫程式碼時我不能超越 Context.Resources
似乎較低的水平沒有暴露。我想獲取呼叫處理程序的操作名稱和控制器名稱。我該怎麼做呢?
var mvcContext = context.Resource as AuthorizationFilterContext; var descriptor = mvcContext?.ActionDescriptor as ControllerActionDescriptor; if (descriptor != null) { var actionName = descriptor.ActionName; var ctrlName = descriptor.ControllerName; }
升級到 dotnet 5 後,我從上面的 Carsten成功使用的解決方案停止工作。以下解決方法現在對我有用:
var routeValues = (context.Resource as HttpContext).Request.RouteValues; var controllerName = routeValues["controller"].ToString(); var actionName = routeValues["action"].ToString();請注意,這應該包括一些空檢查等。上面是一個準系統範例。