在 ASP.NET Core 中获取控制器详细信息

2024-02-17

在 ASP.NET 4.x 中,有一个ReflectedControllerDescriptor所在的类System.Web.Mvc。此类提供控制器的描述符。

在我之前的应用程序中,我曾经这样做过:

var controllerDescriptor = new ReflectedControllerDescriptor(controllerType);

var actions = (from a in controllerDescriptor.GetCanonicalActions()
              let authorize = (AuthorizeAttribute)a.GetCustomAttributes(typeof(AuthorizeAttribute), false).SingleOrDefault()
              select new ControllerNavigationItem
                 {
                    Action = a.ActionName,
                    Controller = a.ControllerDescriptor.ControllerName,
                    Text =a.ActionName.SeperateWords(),
                    Area = GetArea(typeNamespace),
                    Roles = authorize?.Roles.Split(',')
                 }).ToList();

return actions;

问题是我在 ASP.NET Core 中找不到此类的任何等效项。我碰到IActionDescriptorCollectionProvider这似乎提供了有限的细节。

问题

我的目标是在 ASP.NET Core 中编写等效的代码。我该如何实现这一目标?

非常感谢您的帮助


我遇到了 IActionDescriptorCollectionProvider 这似乎 提供有限的细节。

可能你不会投ActionDescriptor to ControllerActionDescriptor。相关信息是here https://stackoverflow.com/a/38269993/5426333

我的目标是在 ASP.NET Core 中编写等效的代码。我如何 达到那个目的?

这是我的尝试ConfigureServices method:

    var provider = services.BuildServiceProvider().GetRequiredService<IActionDescriptorCollectionProvider>();
    var ctrlActions = provider.ActionDescriptors.Items
            .Where(x => (x as ControllerActionDescriptor)
            .ControllerTypeInfo.AsType() == typeof(Home222Controller))
            .ToList();
    foreach (var action in ctrlActions)
    {
         var descriptor = action as ControllerActionDescriptor;
         var controllerName = descriptor.ControllerName;
         var actionName = descriptor.ActionName;
         var areaName = descriptor.ControllerTypeInfo
                .GetCustomAttribute<AreaAttribute>().RouteValue;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET Core 中获取控制器详细信息 的相关文章

随机推荐

  • 如何配置 django-uploadify 仅用于视频上传?

    我想用django uploadify https github com tstone django uploadify仅上传视频 我只希望它仅上传视频 所有类型的视频 或至少所有类型的流行视频格式 到目前为止 我添加了uploadify
  • 为什么将 (Object)null 结果转换为非空?

    我使用 java 7 并创建一个 varargs 方法 public class JavaApplicationTest param args the command line arguments public static void ma
  • R Markdown pdf部分彩色单元格背景(数据栏)

    Excel 有一个称为 数据栏 的功能 它允许根据具有相应长度的单元格值进行条件格式设置 此功能可以通过 R 中的 formattable 使用格式化程序和 color bar 来完成 然而 这样做的结果是一个 html 小部件 无法在 p
  • 为什么在目录上调用 File.listFiles 时可以返回 null?

    我正在创建一个 Android 应用程序 我想列出目录中的文件 我通过调用来做到这一点 File files path listFiles new CustomFileFilter path is a File对象 通过调用创建 File
  • 在三星设备上继续运行时异常:android.view.DisplayListCanvas.throwIfCannotDraw

    我在 Play 商店控制台上发生多次崩溃 我已经检查了可绘制文件夹中的所有图像 这对我来说似乎没问题 因为我怀疑这可能会导致问题 据报道 它主要在三星设备上崩溃 请指出发生了什么错误 对于背景图像 我也使用这个尺寸 高清 480 800 x
  • ngAnimate CSS 动画不适用于 ng-show 和 ng-hide

    DEMO http plnkr co edit cPDUWO p preview http plnkr co edit cPDUWO p preview 我在页面上显示了 2 个选中的复选框和 2 个小部件 单击复选框将使用ng show
  • 签署 F# 程序集(强名称组件)

    我在 CodeProject 上找到了这篇文章 http www codeproject com Articles 512956 NET Shell Extensions Shell Context Menus http www codep
  • python 中的“is”是如何工作的?

    请有人解释一下如何在 if 条件下使用 is 我正在使用分数模块 但遇到了一些麻烦 gt gt gt Fraction 0 1 is 0 False gt gt gt float Fraction 0 1 0 0 gt gt gt floa
  • 如何使用 IDisposable 修复内存泄漏

    我有一个 net 应用程序似乎存在内存泄漏问题 net 服务启动时大约需要 100MB 内存 但在负载下它会达到大约 400 500MB 我的大多数类都没有非托管资源 并且那些已经实现了 IDisposable 的类 所以我的问题是在我的课
  • 延迟加载加载图像后如何触发事件?

    我有需要绝对定位的图像 以便图像的中心位于其父 div 的中心 我已经有执行此操作的代码 我最近添加了延迟加载插件 它按预期工作 但我需要一种触发图像居中代码的方法after延迟加载已加载and图像淡入 我当前的代码基本上是这样的 jQue
  • 更改现有应用程序的证书指纹

    我有一个已发布到 Google Play 的现有应用程序 一切都很好 直到我换了一台电脑并且我的 sha1 指纹发生了变化 有没有可能的方法来更改 google play 开发者控制台中现有应用程序的 sha1 如果没有 我该如何处理 谢谢
  • 在 numpy 中乘以对数概率矩阵的数值稳定方法

    我需要获取包含对数概率的两个 NumPy 矩阵 或其他二维数组 的矩阵乘积 天真的方式np log np dot np exp a np exp b 由于明显的原因而不是首选 Using from scipy misc import log
  • 调用虚拟成员类的方法

    我知道该怎样virtual在成员函数的上下文中工作 但我在网上看到一篇关于虚拟成员类的文章 这让我感到困惑 我找到的例子是这样的 class Machine void run virtual class Parts The inner cl
  • GIT 无法从远程存储库读取

    我克隆了一个私人存储库 将其分叉 并对功能分支进行了一些更改 当我尝试将这些更改推送到存储库时 我收到以下消息 Permission denied publickey fatal Could not read from remote rep
  • Three.js 立方体每面都有不同的纹理

    我正在尝试创建一个 Three js 立方体 每个面上都有不同的纹理 基本上是一个骰子 这是在我的沙盒环境中 因此应该只生成一个旋转立方体 每侧都有骰子图像 1 6 完成后 我打算将其用于浏览器基础游戏 这个例子我只在 Chrome 中进行
  • IIS 的 ProxyPassReverseCookieDomain 等效项

    我使用 IIS 和 URL 重写作为反向代理 我的实际 Web 应用程序托管在无法直接访问互联网的服务器上 在重写规则中 我将反向代理的主机名替换为本地 IP 地址 这很好用 不过 我使用的应用程序提供下载 一旦客户端发出下载请求 服务器端
  • 禁用 jqgrid 的编辑(添加、编辑和删除)按钮而不是隐藏(默认行为)

    默认情况下 Jqgrid 使用值为 false 的适当属性隐藏添加 编辑和删除按钮 例如 导航网格中的 add false edit false del false 或其他方式 在这里 我想禁用这些按钮而不是隐藏 任何人都可以帮忙解决这个问
  • 获取给定进程的 STARTUPINFO

    是否可以获取另一个正在运行的进程的启动信息 我想找出命令行参数 是否应该最小化 最大化运行 在目录中启动 以管理员身份运行等 您需要从远程进程读取 RTL USER PROCESS PARAMETERS 这可以这样做 NTSTATUS Ge
  • 在调试时在注册类中调用 qmlRegisterType() 会导致应用程序崩溃

    我想用qmlRegiterType 在注册类本身中 我尝试使用此方法topic https stackoverflow com questions 37622694 call qmlregistertype in the registere
  • 在 ASP.NET Core 中获取控制器详细信息

    在 ASP NET 4 x 中 有一个ReflectedControllerDescriptor所在的类System Web Mvc 此类提供控制器的描述符 在我之前的应用程序中 我曾经这样做过 var controllerDescript