[英]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 / 0info: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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.