gpt4 book ai didi

c# - Elmah:如何从错误报告中获取 JSON HTTP 请求正文

转载 作者:行者123 更新时间:2023-11-30 18:39:29 25 4
gpt4 key购买 nike

我正在使用 Elmah 记录异常。如果请求是基于表单的请求(即 Content-Type:application/x-www-form-urlencoded),Elmah 非常擅长记录请求主体,但是对于内容类型为 application/json 的基于 JSON 的请求,请求主体在错误报告中无处可寻。任何人都知道我在哪里可以找到这个请求主体,以便我可以正确诊断我的异常?

更新:2012-01-03

为了澄清我所说的基于 JSON 的请求的含义,下面是一个以 JSON 作为请求主体的原始 HTTP 请求示例:

PUT http://mycompany.com/api/v1.0/me HTTP/1.1
Host: mycompany.com
Content-Length: 20
Content-Type: application/json

{"city":"Vancouver"}

最佳答案

到目前为止,ELMAH 仅记录请求外围的上下文或信息,并且可以通过标准方式方便地捕获这些信息。表单可以说是一种特殊处理,因为当 MIME 类型为 application/x-www-form-urlencoded 时,ASP.NET 已经完成了解码和内存请求实体的工作。另一方面,JSON 请求是有问题的,因为在发生异常时,输入流 ( HttpRequest.InputStream ) 可能已部分或全部被 JSON 解码器消耗。 ELMAH 将无法出于记录的目的对其进行第二次破解。因此,您必须确保在通过任何 JSON 解码器传递输入流或文本之前缓冲输入流或文本,并将其存储在像 HttpContext.Items 这样的地方。 .然后您可以尝试恢复缓冲数据和 attach it to an outgoing mail at the time of an error . ELMAH 当前不支持将任意数据附加到记录的错误。但是,ErrorLogModule 有一个 Logged 事件,它提供记录错误的 ID。这可用于将输入数据存储在其他地方(如果您使用后端数据库存储错误日志,则可能在另一个表中)但通过 Id 维护关联将其与记录的错误联系起来。

关于c# - Elmah:如何从错误报告中获取 JSON HTTP 请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com