如何在 asp.net owin api 项目中启用 JSON.NET 序列化/反序列化跟踪?

Posted

技术标签:

【中文标题】如何在 asp.net owin api 项目中启用 JSON.NET 序列化/反序列化跟踪?【英文标题】:How to enable JSON.NET serialization/deserialization tracing in asp.net owin api project? 【发布时间】:2019-07-09 04:58:10 【问题描述】:

我关注了 JSON.NET blog - enable tracing。

它仅显示了当您使用其中一个对象手动反序列化时如何启用跟踪。但是,在 asp.net OWIN 中,序列化/反序列化是由框架完成的,我想知道是否有任何方法可以将跟踪挂钩到 JSON.NET 的 asp.net OWIN 堆栈?

感谢任何帮助。

【问题讨论】:

你是在做webapi还是mvc? 【参考方案1】:

您可以像这样启用跟踪

public class SimpleTracer : ITraceWriter

    public void Trace(HttpRequestMessage request, string category, TraceLevel level, 
        Action<TraceRecord> traceAction)
    
        TraceRecord rec = new TraceRecord(request, category, level);
        traceAction(rec);
        WriteTrace(rec);
    

     //here you can write logic for json serialization/deserialization    
    protected void WriteTrace(TraceRecord rec)
    
        var message = string.Format("0;1;2", 
            rec.Operator, rec.Operation, rec.Message);
        System.Diagnostics.Trace.WriteLine(message, rec.Category);
    

插入你的追踪

 config.Services.Replace(typeof(ITraceWriter), new SimpleTracer());

基于:Tracing in ASP.NET Web API 2

【讨论】:

"这里你可以编写json序列化/反序列化的逻辑",序列化和反序列化是在框架级别进行的。我相信 Web api 控制器在内部使用 JSON.NET 将 JSON(反)序列化为 .net 对象。我不确定如何跟踪“那个”(反)序列化

以上是关于如何在 asp.net owin api 项目中启用 JSON.NET 序列化/反序列化跟踪?的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net Web API 2第十课——使用OWIN自承载Web API

如何在 Asp.Net Web API 2 中使用 Owin OAuth2 修改令牌端点响应正文

尝试在 ASP.net Web API 中发生授权之前使用 OWIN 注入授权标头

asp.net web api 自托管 / owin / katana

Use OWIN to Self-Host ASP.NET Web API 2

JSON Web Token in ASP.NET Web API 2 using Owin