Joh*_*ika 15 .net c# error-logging elmah exception-logging
我正在使用Elmah记录异常.如果请求是基于表单的请求(即Content-Type:application/x-www-form-urlencoded),Elmah非常擅长记录请求主体,但是基于JSON的请求,其中内容类型是application/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"}
Run Code Online (Sandbox Code Playgroud)
Ati*_*ziz 19
到目前为止,ELMAH仅记录请求外围的上下文或信息,并且可以以标准方式方便地捕获.表单可以说是一种特殊的处理方式,因为ASP.NET 在MIME类型时已经完成了解码和记忆请求实体的工作application/x-www-form-urlencoded.另一方面,JSON请求是示例性的,因为在发生异常时,输入流(HttpRequest.InputStream)可能已被JSON解码器部分或完全消耗.为了记录,ELMAH无法获得第二次破解.因此,您必须确保在将输入流或文本传递给任何JSON解码器之前缓冲输入流或文本,并将其存放在某处HttpContext.Items.然后,您可以尝试恢复缓冲的数据,并在发生错误时将其附加到外发邮件.ELMAH当前不支持将任意数据附加到记录的错误.然而ErrorLogModule,有一个Logged事件,它提供了记录错误的Id.这可以用于将输入数据存储在别处(如果您使用后端数据库作为错误日志,可能在另一个表中),但通过ID维护关联将其与记录的错误联系起来.