nancy的诊断2
接上文.
一 再看看第二个面板内容
点击带文号 的 Interactive Diagnostics 这个面板 如下

上面的是诊断程序,默认是系统提供的测试用的诊断程序. 你可以 通过实现IDiagnosticsProvider接口,来使用自己的诊断程序,然后加入到配置就可以了
如
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 就会现实相关的信息
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
作者:过错
出处:http://www.cnblogs.com/wang2650/
关于作者:net开发做的久而已。十余年时光虚度!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com
联系我,非常感谢。

浙公网安备 33010602011771号