泉州seo網(wǎng)站建設(shè)費用品牌建設(shè)
作者:James Newton-King
排版:Alan Wang
開發(fā)人員喜歡 .NET 強大且用戶友好的調(diào)試體驗。您可以在您選擇的 IDE 中設(shè)置斷點,啟動已經(jīng)附加上調(diào)試器的程序,逐步執(zhí)行代碼并查看 .NET 應(yīng)用程序的狀態(tài)。
在 .NET 8 中,我們致力于改善 .NET 應(yīng)用中常用類型的調(diào)試體驗。這些包括:
HttpContext
和其朋友WebApplication
- MVC and Razor Pages
- gRPC
- 端點元數(shù)據(jù)
- 日志
- 配置
您不需要深入了解這些類型的內(nèi)部結(jié)構(gòu)就可以找到有關(guān)應(yīng)用程序的信息。我們?yōu)槌S玫?.NET 類型添加了自定義調(diào)試屬性的功能來顯示調(diào)試摘要以及提供簡化的調(diào)試代理。
HttpContext 和其朋友
HttpContext
、HttpRequest
和 HttpResponse
對于使用 ASP.NET Core 構(gòu)建 Web 應(yīng)用程序的開發(fā)人員來說是非常熟悉的。如果您想查看 HTTP 請求的狀態(tài),那么您需要調(diào)試這些類型。
我們審查了 ASP.NET Core 的 HTTP 類型的屬性,以便它們更容易與調(diào)試器一起使用。查看請求和響應(yīng)值(例如標(biāo)頭、cookie、查詢字符串和表單值)變得更加容易,現(xiàn)在 HttpRequest
和 HttpResponse
還顯示了用戶友好的類型摘要,像 HTTP 請求 URL 或 HTTP 響應(yīng)狀態(tài)碼之類的關(guān)鍵信息可以立即看見。
下面的屏幕截圖顯示了對 HttpContext
相關(guān)類型的改進(jìn):
.NET 7
.NET 8
相比之前好了很多!盡管隱藏了一些數(shù)據(jù),但沒有丟失任何內(nèi)容。您可以選擇 Raw View
以查看所有字段和屬性。
WebApplication
WebApplication
是在 Program.cs
中配置和啟動 ASP.NET Core 應(yīng)用程序的默認(rèn)方式。 更新后的 WebApplication
會顯示重要信息,例如 IDE 調(diào)試器中配置的端點、中間件和 IConfiguration
值。
.NET 7
.NET 8
我們對 .NET Generic Host 進(jìn)行了類似的改進(jìn)。Generic Host 用于托管沒有 HTTP 端點的應(yīng)用程序,例如 Unix daemons 和 Windows Services。
MVC and Razor Pages
ASP.NET Core MVC 和 Razor Pages 是構(gòu)建 Web 應(yīng)用程序的流行框架??刂破?、視圖和 Razor Pages 在 .NET 8 中的調(diào)試獲得了改進(jìn)。
在調(diào)試這些框架時,我們發(fā)現(xiàn)了很多額外的信息。眾多的類型讓人感覺很混亂。在 .NET 8 中,我們審查了每一種類型并捫心自問:“這會給調(diào)試帶來快樂嗎?”?,F(xiàn)在,大多數(shù) MVC 和 Razor 類型都可以更好地進(jìn)行調(diào)試,并且隱藏了非必要類型。下面的屏幕截圖展示了 MVC 控制器的改進(jìn):
.NET 7
.NET 8
我們認(rèn)為您會同意這種整理后的輸出更容易處理。
gRPC
gRPC 是一個用于構(gòu)建 RPC 服務(wù)的高性能庫。最新版本的 gRPC 讓您可以更容易地調(diào)試來自客戶端的 gRPC 調(diào)用?,F(xiàn)在的 gRPC 調(diào)用包含有關(guān)其方法、狀態(tài)、響應(yīng)標(biāo)頭和尾部的信息。有關(guān)請求/響應(yīng)和流式傳輸?shù)钠渌畔⑷Q于 gRPC 調(diào)用類型。下面的示例是一元調(diào)用。
grpc-dotnet 2.55.0
grpc-dotnet 2.56.0
您可以通過將 Grpc.Net.Client 更新到 2.56.0 或更高版本來體驗這些改動。
端點元數(shù)據(jù)
端點是 ASP.NET Core 的核心概念。 端點代表可執(zhí)行的請求處理代碼。當(dāng)應(yīng)用程序啟動時,在應(yīng)用程序中定義的端點被注冊為路由。然后,當(dāng) HTTP 請求進(jìn)入應(yīng)用程序時,路由將請求匹配到端點。 端點的示例包括:
- MVC actions
- Razor Pages
- Minimal APIs
- gRPC methods
端點可以有元數(shù)據(jù),元數(shù)據(jù)控制請求的執(zhí)行方式。例如,API 上的 [Authorize]
屬性保存為端點元數(shù)據(jù),然后 AuthorizationMiddleware
在處理請求時使用它。
在 .NET 8 中,調(diào)試文本已經(jīng)添加到公共元數(shù)據(jù)中。下面的屏幕截圖比較了 .NET 7 和 .NET 8 中的 Endpoint.Metadata 調(diào)試。更容易理解配置了哪些元數(shù)據(jù)以及如何處理與端點匹配的請求。
.NET 7
.NET 8
日志
Microsoft.Extensions.Logging 是 .NET 應(yīng)用程序開發(fā)中流行的日志記錄庫,在整個 ASP.NET Core 中使用。應(yīng)用程序使用 ILogger
輸出結(jié)構(gòu)化日志。
ILogger
從來就不是為調(diào)試而設(shè)計的。這是一個用于寫入日志的簡單接口。在調(diào)試 ILogger
實例時,這種設(shè)計選擇是顯而易見的。它顯示了為性能而設(shè)計的難以理解的數(shù)據(jù)結(jié)構(gòu)。
在 .NET 8 中,可以更容易地了解是否啟用了日志記錄以及配置了哪些日志記錄提供程序。 ILogger
顯示了一個用戶友好的有用信息列表,例如其名稱、配置的日志級別、是否啟用以及配置的日志記錄提供程序。
.NET 7
.NET 8
配置
Microsoft.Extensions.Configuration 是 .NET 應(yīng)用程序和庫使用的配置抽象層。 IConfiguration
可以從配置提供程序加載值,例如 JSON 文件、環(huán)境變量、Azure Key Value 或第三方提供程序。
使用配置的示例位于 ASP.NET Core 模板中。由模板添加的 appsettings.json 文件配置應(yīng)用程序的日志級別:
{"Logging": {"LogLevel": {"Default": "Information"}}
}
在 .NET 8 之前,弄清楚應(yīng)用程序的配置值可能非常困難。配置支持多個提供程序,提供程序可以優(yōu)先于其他提供的程序。例如,雖然默認(rèn)始終使用 appsettings.json
中的值,但它們會被 appsettings.Development.json
或 appsettings.Production.json
有條件地覆蓋,具體取決于應(yīng)用程序的發(fā)布方式。
在 .NET 8 中,現(xiàn)在調(diào)試 IConfiguration
會顯示一個包含所有配置鍵和值的簡單列表。優(yōu)先級已計算過了,因此您看到的配置值就是應(yīng)用程序?qū)⒁褂玫闹怠?br /> .NET 7
.NET 8
更多信息
有太多的改進(jìn),無法一一詳述以及列出它們。但預(yù)計 .NET 8 中的調(diào)試器可視化會有更多改進(jìn):
- 依賴注入
ClaimsPrincipal
和ClaimsIdentity
StringValues
和StringSegment
HostString
,PathString
,QueryString
和FragmentString
- HTTP 標(biāo)頭集合
RouteValueDictionary
- ASP.NET Core MVC 的
ModelState
現(xiàn)在就試試
.NET 8 調(diào)試增強功能現(xiàn)在已經(jīng)在 .NET 8 RC1 中提供。您可以按照下面的步驟嘗試一下,然后讓我們知道您的想法:
- 下載最新的 .NET 8 版本。
- 啟動 Visual Studio 2022(或您首選的 IDE)并創(chuàng)建 ASP.NET Core 或 Worker Service 應(yīng)用程序。
- 設(shè)置斷點并按 F5 運行應(yīng)用程序并進(jìn)行調(diào)試。
感謝您嘗試 .NET 8 和 .NET 8 調(diào)試增強功能!