Asp.Net 每个程序集或命名空间或项目的核心 GetRoutes
Asp.Net Core GetRoutes per assembly or namespace or project
我正在尝试从我的应用程序中获取所有可访问 url 的概览。我有一个包含 2 个项目的应用程序(一个是默认项目,另一个是 Razor Class 库)。
在这两个项目中都定义了 Razor 页面,当我使用 AspNetCore.RouteAnalyzer
(如 中所示)时,我得到了所有可访问路径的概览。但我想知道路线的程序集、项目或命名空间。我怎样才能做到这一点?
2021 年 7 月 28 日 - 在 abdusco 的帮助下更新:
可从 Asp.Net Core 6.0 访问此信息:https://github.com/dotnet/aspnetcore/issues/34759
您无法检索 ASP.NET Core 6 之前的 Razor 页面的运行时类型信息。您只能访问 PageActionDescriptor
s,但遗憾的是它们不提供类型信息。
With ASP.NET Core 6, this is changed,现在您可以获得 CompiledPageActionDescriptor
的 Razor 页面,其中包含反射信息。
var host = CreateHostBuilder(args).Build();
var provider = host.Services.GetRequiredService<IActionDescriptorCollectionProvider>();
var pageEndpoints = provider.ActionDescriptors.Items.OfType<CompiledPageActionDescriptor>()
.Select(e => {
var modelType = e.ModelTypeInfo;
var route = e.DisplayName;
// ...
});
我正在尝试从我的应用程序中获取所有可访问 url 的概览。我有一个包含 2 个项目的应用程序(一个是默认项目,另一个是 Razor Class 库)。
在这两个项目中都定义了 Razor 页面,当我使用 AspNetCore.RouteAnalyzer
(如
2021 年 7 月 28 日 - 在 abdusco 的帮助下更新:
可从 Asp.Net Core 6.0 访问此信息:https://github.com/dotnet/aspnetcore/issues/34759
您无法检索 ASP.NET Core 6 之前的 Razor 页面的运行时类型信息。您只能访问 PageActionDescriptor
s,但遗憾的是它们不提供类型信息。
With ASP.NET Core 6, this is changed,现在您可以获得 CompiledPageActionDescriptor
的 Razor 页面,其中包含反射信息。
var host = CreateHostBuilder(args).Build();
var provider = host.Services.GetRequiredService<IActionDescriptorCollectionProvider>();
var pageEndpoints = provider.ActionDescriptors.Items.OfType<CompiledPageActionDescriptor>()
.Select(e => {
var modelType = e.ModelTypeInfo;
var route = e.DisplayName;
// ...
});