簡體   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