读取中间件.Net Core中的Controller和Action名称

2023-12-31

我正在我的项目中编写一个中间件类,以便将请求数据记录到我们的数据库中。

我没有看到任何简单的方法来获取控制器名称和操作? 有机会在核心中轻松做到这一点吗?

我有这样的事情:

public class RequestResponseLoggingMiddleware
{
    private readonly RequestDelegate _next;

    public RequestResponseLoggingMiddleware(RequestDelegate next)
    {
        _next = next;            
    }

    public async Task Invoke(HttpContext context)
    {        
        //handle the request
        //something like: context.GetRouteData();

        await _next(context);                 

        //handle the response
    }       
}

我遇到了同样的问题,这在 .Net Core 3.1 中对我有用:

public async Task InvokeAsync(HttpContext httpContext)
{
    var controllerActionDescriptor = httpContext
        .GetEndpoint()
        .Metadata
        .GetMetadata<ControllerActionDescriptor>();

    var controllerName = controllerActionDescriptor.ControllerName;
    var actionName = controllerActionDescriptor.ActionName;
            
    await _next(httpContext);
}

为了GetEndpoint()要返回实际端点而不是 null,必须满足以下条件。

  • 启用端点路由(AddControllers()代替AddMvc())
  • 之间调用你的中间件UseRouting() and UseEndpoints().
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取中间件.Net Core中的Controller和Action名称 的相关文章

随机推荐

  • Firebase 托管 MIME 类型

    有没有人找到一种方法来设置使用 Firebase 托管托管文件时在 Content Type 标头中返回的 mime 类型 文档说他们支持规则文件中的某些标头 但不支持内容类型 无论如何我都将其绑定 但由于错误 hosting header
  • 将范围传递给 AngularJS 上的服务

    我对 AngularJS 还很陌生 我想将范围传递给服务 这样我就可以根据scope value 执行标签搜索 div div div div
  • 扩展和集群 JPA

    我正在 jboss7 上构建一个常规 Java EE 应用程序 该应用程序将在数据层中使用 JPA 我想让这个应用程序随着负载的增加而扩展 虽然如何扩展 Web 层非常清楚 创建更多机器并将它们放在负载均衡器后面 但扩展数据层却不太清楚 我
  • 识别一般保护故障 (x86) 上的故障地址

    我正在尝试为 x86 上的一般保护错误 GP 13 编写 ISR 我无法从 INTEL 文档中找出如何找出导致异常的错误地址 我知道对于页面错误异常 GP 14 cr2 寄存器保存错误地址 任何帮助表示赞赏 我在这里所做的所有参考资料均来自
  • 客户端和服务器需要使用相同的端口进行连接吗?

    我有一个使用java的服务器客户端程序 我尝试创建一个ServerSocket有端口和客户端Socket具有不同的端口 并且它们无法相互连接 客户端抛出ConnectException 当我将 Client 上的套接字更改为与 Server
  • PHP 中的重定向/返回检查

    我有一个用 PHP 运行的网站 并且有一个页面 例如 confirm php 我只想允许登陆的用户确认 php 来自我指定的页面 例如 register php 我可以知道是否可以实现这一点 问候 安迪 你不能依赖HTTP 引用因为用户可以
  • 如何检测 Xamarin 表单 TabbedPage 中是否触摸了选项卡

    如何检测 Xamarin 表单 TabbedPage 中是否触摸了选项卡 这与我想出如何检测的页面更改检测不同 原因如下 我正在尝试解决一个相当丑陋的选项卡式页面溢出用户界面 标签栏右侧显示的丑陋的滚动条 每当有 gt 5 个选项卡时 因此
  • Apps 脚本 - 将 JSON 正确导出到 Google Sheet

    我对 Apps Script Javascript 还很初学者 我有一些使用 API 导出的 JSON 数据 以下是我这样做时得到的结果 console log jsonData 我试图 将此 JSON 数据转换为 CSV 将数据放入活动电
  • 杀死 Mac OSX 端口 80 上未知的自重启服务器

    我有一台服务器在端口 80 上运行 但我不知道它是什么或它来自哪里 当我跑步时 sudo lsof i 80 grep LISTEN I get httpd 80 root 5u IPv6 0x91f5a9de62859cfd 0t0 TC
  • 在 WHERE 子句中使用 CASE

    我的查询的简化版本 SELECT FROM logs WHERE pw correct AND CASE WHEN id lt 800 THEN success 1 ELSE END AND YEAR timestamp 2011 这是行不
  • NSDateFormatter 用于 BST 而不是 GMT+1

    我想在时间轴上显示以下字符串 格林威治标准时间 英国夏令时 这是代码 NSDateFormatter dateformatter NSDateFormatter alloc init dateformatter setDateFormat
  • 存储在单个向量中的三角形邻接矩阵的正向和逆向索引

    我有一张带有点的地图 我想知道每个点之间的距离 这可能称为无向循环图 由于点很多 我的存储空间有限 所以阵列需要很密集 对于 4 个城市 n 4 我需要 6 个索引来映射这 4 个城市 Index City1 lt gt City2 Ind
  • 推送到接口类型数组

    我有一个名为 TestEvent 类型的 rows 的数组 并且想要推送到该数组 我无法输出我推送的对象 它仅显示未定义 正如您所看到的 this rows 显示了数组 但是当我尝试输出特定数组 this rows 0 时 我得到了未定义
  • 有没有办法测试jqGrid是否有数据?

    我正在尝试启用和禁用 jqgrid 上的自定义按钮 但仅当网格为空时才启用该按钮 然后在网格不为空时禁用该按钮 有没有办法测试网格是否有数据 Thanks 您可以测试一下网格中有多少条记录 如果没有行 则网格为空 jQuery grid j
  • 修改我的.jar程序的任务栏图标

    我试图更改每次运行 jar 程序时出现在任务栏中的默认 java 图标 我设法用frame setIconImage img 更改它但这使得图标太小 我希望它与其他程序图标一样大并且具有高质量 我有什么办法可以做到这一点吗 谢谢 由于您只提
  • Android:使用“连续”自动对焦录制视频

    我从事视频录制工作 除了要求持续专注之外 一切正常 这就是我所做的 在surfaceCreated和surfaceChanged中都尝试过但没有成功 camera Camera open camera setPreviewDisplay h
  • JavaFX WebView 中的缓存

    我们正在开发一个JavaFX 2 x 应用程序 它需要提供一些GIS 支持 我们得出的结论是 通过嵌入式 WebView 使用 GoogleMaps 是最快的选择 问题是每次我们的应用程序启动时 都会下载相应的 JavaScript 库 这
  • 为什么 Scripts.Render 会调用 JsMinify.Process?

    我介绍了我的ASP NET MVC应用程序 我看到一个奇怪的函数调用 你可以在图片上看到它 总是当 mvc 渲染布局时我们调用system web optimization scripts render哪个调用JsMinify Proces
  • SQL Server 用户实例中的哪些内容导致它们无法在非 Express Edition 中使用?

    开发了几年 或更长时间 后 我仍然不明白 What makes User Instances impossible incompatible with Developer or any other edition of SQL Server
  • 读取中间件.Net Core中的Controller和Action名称

    我正在我的项目中编写一个中间件类 以便将请求数据记录到我们的数据库中 我没有看到任何简单的方法来获取控制器名称和操作 有机会在核心中轻松做到这一点吗 我有这样的事情 public class RequestResponseLoggingMi