如何在c#中递归地遍历并记录HttpRequestMessage的属性?
本文关键字:记录 HttpRequestMessage 属性 遍历 递归 | 更新日期: 2023-09-27 18:02:39
感谢您的关注!
<标题> 的背景我正在开发一个MVC4 . net应用程序,并编写了一个过滤器来捕获所有错误(应用程序范围内),记录所述错误,然后通过html格式的电子邮件向开发团队报告。
我写的过滤器捡起HttpActionExecutedContext,从那里我可以派生异常,堆栈跟踪,方法调用,和一堆其他有用的信息。
我访问的大多数信息都是字符串或字典的形式,我使用助手方法迭代这些项,并将它们放入报告电子邮件的HTML表中。
有一个属性,然而,这是给我悲伤:HttpRequestMessage属性。
HttpActionExecutedContext对象(HttpActionExecutedContext. request . properties)的这个属性有许多不同类型的嵌套属性。
<标题>我遇到了几个障碍,以递归的方式遍历这个HttpActionExecutedContext.Request.Properties对象,并将其解析为KV对的层次结构。这些问题是由空值、类型不匹配等引起的。
这是我从请求中得到的当前结果。属性:
MS_HttpContext:
System.Web.HttpContextWrapperMS_RetrieveClientCertificateDelegate: System.Func 2 (System.Net.Http.HttpRequestMessage, System.Security.Cryptography.X509Certificates.X509Certificate2)
MS_IsLocal:
没有创建价值。MS_IncludeErrorDetail:
没有创建价值。MS_HttpRouteData:System.Web.Http.WebHost.Routing.HostedHttpRouteDataMS_SynchronizationContext:
System.Web.AspNetSynchronizationContextMS_HttpConfiguration:System.Web.Http.HttpConfiguration
MS_DependencyScope:
System.Web.Http.Dependencies.EmptyResolverMS_DisposableRequestResources:> System.Collections.Generic.List ' 1 (System.IDisposable)
所以你可以看到,我真正得到的值是属性的type
。我需要value
。如果这个值是一个嵌套的字典之类的,那没问题,但我需要遍历它并记录它的KV对因为仅仅给我对象的类型是没有用的。
我如何递归地遍历这个对象并最终得到一个KV对的字典(其中一些值本身就是字典)?是否有一个辅助类或某种动态方法我错过了?
标题>标题>标题>为什么不直接使用JSON之类的东西呢?NET并让它将对象转换为json。然后你可以使用json数据并设置一些嵌套限制,或者你可以记录整个json字符串本身。