是否有办法(回溯)确定哪个中间件回答了请求? 在某个地方或类似地方有堆栈跟踪吗?
我想要的可能是直到最后一个中间件的堆栈跟踪,该中间件可以在httpcontext对象中访问。
我可以只设置标志来添加一些伪造的中间件,但是我希望有一些不需要添加代码的东西。
例如,可以区分静态文件和MVC所服务的请求(这是一个示例,但并不详尽,我有多个中间件服务于响应,并且我希望能够识别出哪个一个)。
答案 0 :(得分:1)
ASP.NET Core Logging API已经提供了您所需要的。 您可以获得以下输出:
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [1]
请求启动HTTP / 1.1 GET http://localhost:5000/api/todo/0信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [1] 用参数(0)执行操作方法TodoApi.Controllers.TodoController.GetById(TodoApi)-ModelState有效
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [1] 请求启动HTTP / 1.1 GET https://localhost:44301/css/bootstrap.css
信息:Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware [2] 正在发送文件。请求路径:“ / css / bootstrap.css”。物理路径:XXX
最简单的方法是创建一个appsettings.Development.json
文件,您可以在其中设置以下配置:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"Console":
{
"IncludeScopes": true
}
}
}
默认情况下,您将能够在控制台中查看日志。您可以使用不同的ILoggerProvider
来更改日志的显示位置。
我建议您阅读Logging chapter on MSDN