从 ExceptionLogger 引用操作参数

2023-11-21

我想利用新方法来全局记录错误。我写了一个继承的类ExceptionLogger并覆盖Log()方法。然后将其注册为替代品。

public class TraceExceptionLogger : ExceptionLogger
{
    public async override void Log(ExceptionLoggerContext context)
    {
        //  This is always empty string
        var content = await context.Request.Content.ReadAsStringAsync();

        //  This is almost always null
        var actionContext = context.ExceptionContext.ActionContext;
    }
}

我可以挖掘ExceptionLoggerContext对象的属性来获取我需要的几乎所有内容,除了操作参数。确实有一个ActionContext属性,但我只看到它为空并且这个维基页面指出ActionContext and ControllerContext几乎总是为空。

另外,我无法获取内容流,因为它的流在到达我的记录器之前已经被读取。所以我无法从请求的内容中获取任何已发布的 json。

有没有办法获取发布的数据HttpContext.Current或者以其他方式?


好吧,看起来我可以通过读取 Request 对象上的 InputStream 来从 HttpContext 获取正文,如下所示:

string bodyText = string.Empty;

using (var sr = new StreamReader(HttpContext.Current.Request.InputStream))
{
    sr.BaseStream.Seek(0, SeekOrigin.Begin);
    bodyText = sr.ReadToEnd();
}

到目前为止,这段代码已经成功地获取了我发布的 json 数据。

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

从 ExceptionLogger 引用操作参数 的相关文章

随机推荐

  • 长时间运行的任务被取消后如何正确清理

    我创建了一个类 其目的是抽象出对队列的并发访问的控制 该类设计为在单个线程上实例化 由多个线程写入 然后从后续的单个线程中读取 我在类中生成了一个长时间运行的任务 它将执行阻塞循环 并在项目成功出列时触发一个事件 我的问题是 我是否实现了取
  • 如何将sqlite同步到Mysql

    大家好你们好 我有个问题 如果我有一台运行 sqlite 的计算机 并且我想让 sqlite 同步外网中的 Mysql 服务器 如果sqlite中的数据已被 更改 修改 我如何同步我的MYSQL DB和sqlite 以便当MYSQL DB中
  • 将 Excel 文件合并为一个

    我有几百个 Excel 文件 每个文件的第一张纸上都有一些数据 我被要求用 C 编写一个控制台应用程序 它将所有 Excel 文件合并到一个文档中 同时保留格式 合并文件是一个单独的工作簿 其中包含合并到文档中的每个文件的工作表 不幸的是
  • Jenkins-作业失败

    我已经设置了一个 uberSVN 服务器 并运行 Jenkins 以使用 PHP WebWare 控制 SVN 存储库 我已经遇到了问题并寻找解决方案已经好几个小时了 现在我希望这是最后一个 但我没有找到任何答案 Publishing Cl
  • LINQ:如何在多个字段上使用 linq 扩展方法样式进行 JOIN?

    在下面的连接中 我想使用多个字段来进行连接 而不仅仅是一个字段 var join group Join procSums g gt g DeptID ps gt ps key deptID g ps 我发现的所有示例都使用查询样式来执行此操
  • 检测连接的音频设备 iOS

    我正在尝试找出如何检测 iphone ipad ipod 上是否连接了任何音频设备 我知道有关音频路由调用和路由更改回调的所有信息 但这些并没有告诉我有关附加内容的任何信息 它们仅报告音频当前路由的位置 例如 我需要知道当音频通过扬声器传送
  • 如何在 theano 中获得一维卷积

    我能找到的唯一函数是二维卷积此处描述 有没有优化的一维函数 看起来好像这是开发中 我意识到我可以使用conv2d 通过将宽度或高度指定为 1 对于函数conv2d 参数image shape获取长度为 4 的列表 其中包含 number i
  • Node.js:捕获“child_process.spawn”的 STDOUT

    我需要在自定义中捕获stream生成的子进程的输出 child process spawn command args options 例如 var s fs createWriteStream tmp test txt child proc
  • Windows 上的 Bash - exe 文件的别名

    我正在 Windows 上的 Ubuntu 上使用 Bash 这是在 Windows 10 上运行 bash 的方式 我安装了 Creators 更新 Ubuntu 版本是 16 04 我最近在玩 npm node js 和 Docker
  • globalPackagesFolder存储库路径差异

    根据globalPackagesFolderNuGet 文档 它允许您更改默认全局包文件夹的位置 而不是 Users username nuget packages 所以 我发现这是存储包裹的地方 另一方面 repositoryPathNu
  • 使 FetchContent 与 find_package 兼容

    我尝试添加我的项目所需的所有依赖项以通过 CMake 进行编译 这应该会减少其他人第一次编译项目时的开销 为了实现这一点 我尝试使用 FetchContent 到目前为止一切顺利 当我链接生成的目标时 这根本不是问题 但现在我有一个库依赖于
  • 您需要在 GCD 的块内创建 NSAutoreleasePool 吗?

    通常 如果您生成后台线程或在 NSOperationQueue 上运行 NSOperation 则需要为该线程或操作创建 NSAutoreleasePool 因为默认情况下不存在 同样的规则是否适用于放置在 Grand Central Di
  • Jquery 验证插件 - 您可以从选项中启用“热切”验证吗?

    我在项目中使用 Jquery 验证插件 默认情况下 该插件会在单击提交按钮时验证输入 该行为是 惰性的 以便不打扰用户 如果发现错误 验证就会变得 急切 并在用户更正有问题的条目时验证输入 有没有办法通过选项覆盖最初的 惰性 行为 我在文档
  • 如何从时间(小时)中删除前导零

    我想要从 1 到 9 的小时不带前导零 但分钟带零 同时还要在时间上添加 15 分钟 现在 当我输入 1 和 46 时 我得到 02 01 我想得到 2 01 Scanner scan new Scanner System in int h
  • Request.Browser.IsMobileDevice 不适用于 iPadAir2 和 iOS 13.0.1

    I am able to detect iPadAir2 device running on iOS 11 4 using Request Browser IsMobileDevice and it gives me UserAgent i
  • 颁发者证书的过期状态是否会影响主体的过期?

    如果证书颁发者颁发的证书的过期时间发生在颁发者自己的证书过期之后 那么颁发者的证书过期后 颁发的证书是否仍然有效 为了更清楚 让我举个例子 I 发行人 C 颁发的证书 如果我在 2007 年创建了 C 到期日期为 2017 年 我的证书20
  • Leopard 终端(和 iTerm)忽略控制组合键

    I am very used to using Ctrl A Ctrl E Ctrl L etc as shortcuts to operations beginning of line end of line clear terminal
  • 找到不在列表中的最小整数

    我的一位同事使用了一个有趣的面试问题 假设给您一个非常长的 未排序的无符号 64 位整数列表 你如何找到最小的非负整数does not出现在列表中 后续 既然已经提出了明显的排序解决方案 你能比 O n log n 更快地完成它吗 后续 您
  • 查找“nan”并将其替换为数字

    我想替换数组中的数字 3 而不是所有 nan 这是我的代码 train train replace nan int 3 但我的数组没有任何变化 你能指导一下吗 您可以使用np isnan import numpy as np train n
  • 从 ExceptionLogger 引用操作参数

    我想利用新方法来全局记录错误 我写了一个继承的类ExceptionLogger并覆盖Log 方法 然后将其注册为替代品 public class TraceExceptionLogger ExceptionLogger public asy