我需要檢索 ASP Core 應用程式中的所有端點并生成它們的完整路徑。
例如:/a/b/c/endpoint, x/y/endpoint,...
這些端點需要包括控制器操作以及StartUp使用這些Map*()方法手動定義的端點。
我能夠使用以下方法檢索端點串列:
services.GetRequiredService<EndpointDataSource>().Endpoints;
但是我找不到如何為 . 創建相應的完整路徑的方法Endpoint,特別是如果該端點位于分支的 ASP 管道內。Endpoint 物件有一個RoutePattern可以使用的屬性,但我們仍然需要分支管道的基本路徑。
干杯
uj5u.com熱心網友回復:
解釋你的問題,你有一個分支請求管道,呼叫.UseEndpoints多個分支。但是當.Map中間件調整Request.Path& 時Request.PathBase,端點路由沒有注意到這個變化。
我認為這在鏈接生成中不受支持。如果您真的需要使用.Map,您可能應該退后一步并重新評估。或者至少是preserveMatchedPathSegment = true過載。
快速瀏覽源代碼后。
在.Map每個方法創建一個單獨IApplicationBuilder為該分支管道的中間件。
呼叫.UseRouting()創建一個IEndpointRouteBuilder.
該IEndpointRouteBuilder則使用由.UseEndpoints()定義所有的端點。
所以這里是我嘗試的快速概述。
撰寫您自己的擴展方法來替換.Map&.UseEndpoints并在您的Startup類中使用它們。
將新路徑庫存盤(或組合)在IApplicationBuilder.Properties.
然后在您的.UseEndpoints()回呼中,您可以呼叫真正的回呼。然后使用EndpointDataSource src = new CompositeEndpointDataSource(IEndpointRouteBuilder.DataSources). 將其與您之前存盤的路徑基礎相結合。
并將所有這些填充到其他一些服務物件中以備后用。
除非有人能指出一個更簡單的方法?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328970.html
