如何拦截 MVC 应用程序中的所有控制器调用?

2024-02-14

是否有一种快速方法可以拦截 MVC-3 中的所有控制器调用?

出于记录和测试的目的,我想构建一个工具,可以拦截所有控制器调用,并记录调用哪个控制器、使用哪个消息、在什么时间调用。


我不记得我从哪里得到这个,但我不久前在寻找类似的东西,发现一篇文章或某个地方包含这个日志过滤器:

public class LogActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Log("OnActionExecuting", filterContext.RouteData);
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        Log("OnActionExecuted", filterContext.RouteData);
    }

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        Log("OnResultExecuting", filterContext.RouteData);
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        Log("OnResultExecuted", filterContext.RouteData);
    }

    private void Log(string methodName, RouteData routeData)
    {
        var controllerName = routeData.Values["controller"];
        var actionName = routeData.Values["action"];
        var message = string.Format("{0} controller: {1} action: {2}", methodName, controllerName, actionName);
        Debug.WriteLine(message, "Action Filter Log");
    }
}

要使用它,只需将其添加到 global.asax 中的全局过滤器中即可:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new LogActionFilter());
}

我现在就去看看是否能找到来源。

Edit:找到了。原来是从这个问题 https://stackoverflow.com/questions/3569873/asp-net-mvc-actionfilter.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何拦截 MVC 应用程序中的所有控制器调用? 的相关文章

随机推荐

  • Python 套接字 gethostbyname() 仅返回一个 IP 地址

    我正在使用Python套接字做一些简单的实验 其中我有一个主机名 它用两个IP地址解析 但是当我使用时 socket gethostbyname demo sample com 我只获得一个 IP 地址 为什么会这样显示 有没有其他方法可以
  • 在 WinRT 中选择 XAML 的 ListView 和 GridView

    XAML中的GridView和ListView似乎是同一个控件 开发商如何在两者之间做出选择 GridView 控件通常水平滚动 此外 您还会看到项目之间的一些本机间距大于 ListView 中的间距 之所以存在这种间距 是为了考虑如何在
  • android:从应用程序代码检测应用程序的重新安装

    有没有办法在重新安装应用程序代码时进行检测 我看到可以通过监听广播接收器中的 PACKAGE REPLACED 事件来检测来自市场的应用程序更新 但是 如果从编辑器 eclipse 重新安装应用程序 这些事件不会传递到应用程序 我的要求是禁
  • 快速添加:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_l386_INVOP,子代码= 0x0)

    我正在尝试在 Swift 中添加两个数字并打印其总和 import Foundation func solveMefirst firstNo Int secondNo Int gt Int return firstNo secondNo l
  • 如何修改log4j JsonLayout字段名称

    我已经使用此配置文件配置了 log4j 2 来编写我的MapMessage控制台
  • C二叉树,如何从树叶创建列表

    我需要建立树中所有叶子的列表例如 我有以下树 6 4 3 1 2 5 7 树节点类型定义 typedef struct treeNode int data struct treeNode parent struct treeNode lef
  • 如何在 Kubernetes 中移除(删除)注解

    有没有什么不同的方法kubectl edit删除 Kubernetes 中的注释 我不喜欢互动性kubectl edit 我更喜欢脚本中可用的东西 使用减号 在注释末尾签名kubectl annotate Example kubectl a
  • 字符串和字符数组之间的区别

    这些声明有何不同 String s MY PROFESSION char c MY PROFESSION 每种情况下的内存分配情况如何 要更正编译错误 请替换为以下内容之一char 陈述 String s MY PROFESSION cha
  • 计算机科学中的 Big-O 表示法有什么大不了的?

    Big O 表示法对我的日常 C 编程有何帮助 这只是一个学术练习吗 Big O 通过输入的大小来告诉您算法的复杂性 这是基本的如果你想知道算法将如何扩展 如果您正在设计一个大型网站并且拥有大量用户 那么处理这些请求所需的时间就很重要 如果
  • 如何仅在表格中的某些单元格上使用 CSS 悬停?

    如何仅在表格中的某些单元格上使用 CSS 悬停 我可以对那些我不想应用的应用程序将其关闭吗 我正在使用这个 td hover border style dotted border color F60 border width medium
  • 在哪里可以找到 Java prism 渲染可能的选项和文档?

    我的应用程序在 Canvas 生成方面遇到问题 我正在使用 JavaFx 设置此选项有帮助 Dprism order j2d 问题是我找不到 prism Prism 的任何文档 第二个问题是我想通过配置文件设置此选项 Properties
  • PHP SoapClient 与 BasicAuth

    我有一个 PHP 脚本尝试连接到 WSDL 我需要允许自签名并提供基本的身份验证详细信息 使用 SOAP UI 当我连接到 WSDL 时 系统会提示我输入用户名 密码 我得到了这个工作 我还发现每个请求还需要基本身份验证 因此在请求屏幕上
  • 将模型从 3dStudioMax 导入 THREE.js

    我知道 THREE js 有各种 3d 图形格式的导入器 是否有适合显示在 3dStudioMax 中创建的模型的导入器 如果没有 是否有一种方法可以将 3dStudioMax 模型转换为可在 THREE js 中导入的模型 您有两个选择
  • jQuery 自动完成 1.1:在焦点上显示所有数据

    怎么做这个扩展 http jquery bassistance de autocomplete demo 显示焦点上的所有数据 我尝试将 minChars 更改为0但它仅在双击输入时显示 month autocomplete months
  • QLabel & Word Wrap :如何基于逗号换行(与空格)

    我正在尝试制作多行QLabel文本不带空格但以逗号分隔 例如 猫 狗 兔子 火车 汽车 飞机 奶酪 肉 门 窗 我发现多行是可能的setWordWrap但它会根据空格而中断 如何根据逗号换行 这是代码示例 from PySide2 QtWi
  • 事实上,为什么CocoaPods不安装最新版本的pod呢?

    注意 实际上显然是这样 使用马塞洛解释的语法 希望它能帮助别人 使用 CocoaPods 你基本上可以做到这一点 pod GTScrollNavigationBar gt 0 1 1 例如 它将安装 0 1 1 的 GTScrollNavi
  • EventHandler 不适用于动态控制

    我已经提到过动态链接按钮的事件处理程序出错 https stackoverflow com questions 8770425 error with the event handlers of dynamic linkbutton 它说添加
  • 调整右下角无边框窗口的大小

    我希望用户调整右下角无边框窗口的大小 就像我可以调整组合框控件的自动完成窗口的大小一样 我找不到以这种方式配置表单的属性 也许有人可以帮助我解决这个问题 可以在这里找到图像 这是与 Franci 的解释相对应的代码 我正在编写它 但他同时回
  • Kubernetes Pod 停留在 Terminate 的解决方案

    我遇到了上述问题 在 kubectl delete f 之后 我的容器将陷入 终止 状态 我在 Docker 日志中看不到任何可以帮助我缩小范围的内容 Docker 重新启动后 pod 就会消失 我可以像往常一样继续 但这不是你的生活方式
  • 如何拦截 MVC 应用程序中的所有控制器调用?

    是否有一种快速方法可以拦截 MVC 3 中的所有控制器调用 出于记录和测试的目的 我想构建一个工具 可以拦截所有控制器调用 并记录调用哪个控制器 使用哪个消息 在什么时间调用 我不记得我从哪里得到这个 但我不久前在寻找类似的东西 发现一篇文