nancy的诊断2

接上文.

一 再看看第二个面板内容

点击带文号 的  Interactive Diagnostics 这个面板 如下

 

上面的是诊断程序,默认是系统提供的测试用的诊断程序.  你可以 通过实现IDiagnosticsProvider接口,来使用自己的诊断程序,然后加入到配置就可以了

如 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class CustomDiagnosticsProvider : IDiagnosticsProvider {
    public string Name
    {
        get { return "Custom diagnostics provider"; }
    }
     
    public string Description
    {
        get { return "Provides custom diagnostics capabilities"; }
    }
     
    public object DiagnosticObject
    {
        get { return this; }
    }
     
     
     
     
     
    [Description("Greets a person using their name")]
    [Template("<h1>{{model.Result}}</h1>")]  //呈现模板
    public string Greet(string name)
    {
        return string.Concat("Hi, ", name);
    }
}

  

然后在启动器中加入 设置

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
container.Register<IDiagnosticsProvider>(new CustomDiagnosticsProvider());

}

这样就可以了.

其实这玩意没多大用,就是反射CustomDiagnosticsProvider中的方法 ,供你测试.

第二个是测试路由和视图的,就不说了.

二  最后一个面板 Request Tracing

点击进去,会出现一个session的列表  ,从 return this.Response.AsJson(this.sessionProvider.GetSessions().Select(s => new { Id = s.Id }).ToArray()); 获取的

我的没有session 就是 这样

 

点击一个sessionid 就会现实相关的信息 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Get["/sessions/{id}"] = ctx =>
          {
              Guid id;
              if (!Guid.TryParse(ctx.Id, out id))
              {
                  return HttpStatusCode.NotFound;
              }
 
              var session =
                  this.sessionProvider.GetSessions().FirstOrDefault(s => s.Id == id);
 
              if (session == null)
              {
                  return HttpStatusCode.NotFound;
              }
 
              return this.Response.AsJson(session.RequestTraces.Select(t => new
                  {
                      t.RequestData.Method,
                      RequestUrl = t.RequestData.Url,
                      RequestContentType = t.RequestData.ContentType,
                      ResponseContentType = t.ResponseData.ContentType,
                      RequestHeaders = t.RequestData.Headers,
                      ResponseHeaders = t.ResponseData.Headers,
                      t.ResponseData.StatusCode,
                      Log = t.TraceLog.ToString().Replace("\r", "").Split(new[] { "\n" }, StringSplitOptions.None),
                  }).ToArray());
          };

  

总的来说,这个东西,没有想象中有用.

所有的东西,只要查看 源文件就知道了.在这里

 

 

 

 

 

参考地址 https://github.com/NancyFx/Nancy/wiki/Diagnostics

posted @   过错  阅读(281)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示