繁体   English   中英

确定在ASP.NET Core网站上回答的中间件

[英]Determine which middleware answered on ASP.NET Core websites

有没有办法确定(回来)哪个中间件回答了请求? 是否有某个堆栈跟踪或类似的东西?

我所寻求的可能是一个堆栈跟踪,直到被调用的最后一个中间件,可以在httpcontext对象中访问。

我可以添加一些假的中间件只是设置标志,但我更喜欢有一些不需要添加代码的东西。

例如,区分静态文件和MVC服务的请求(这是一个例子,但并非详尽无遗,我有几个中间件提供响应,我希望能够识别哪一个)。

ASP.NET Core Logging API已经提供了您所需的功能。 您可以获得以下输出:

info:Microsoft.AspNetCore.Hosting.Internal.WebHost [1]
请求启动HTTP / 1.1 GET http:// localhost:5000 / api / todo / 0

info:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [1]使用参数(0)执行操作方法TodoApi.Controllers.TodoController.GetById(TodoApi) - ModelState有效

info:Microsoft.AspNetCore.Hosting.Internal.WebHost [1]请求启动HTTP / 1.1 GET https:// localhost:44301 / css / bootstrap.css

info:Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware [2]发送文件。 请求路径:'/ css / bootstrap.css'。 物理路径:XXX

实现此目的的最简单方法是创建一个appsettings.Development.json文件,您可以在其中设置以下配置:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console":
    {
      "IncludeScopes": true
    }
  }
}

默认情况下,您将能够在控制台中查看日志。 您可以使用不同的ILoggerProvider更改日志的显示ILoggerProvider

我建议您阅读MSDN上日志记录章节

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM