Asp.net

從 AuthorizationHandlerContext 對象獲取控制器和動作名稱

  • February 18, 2021

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();

請注意,這應該包括一些空檢查等。上面是一個準系統範例。

引用自:https://stackoverflow.com/questions/41103694