获取 ASP.NET Core 3.0 中所有注册的路由

Joh*_*sky 4 asp.net-core

我正在尝试调试路由问题,我不确定外部应用程序必须点击哪个 url 才能正确触发我的控制器。我只想把它们全部打印出来。

我发现在 ASP.NET Core 中获取所有注册的路由,但似乎没有一个答案在 Asp.net Core 3.0 中有效

我还找到了https://www.nuget.org/packages/AspNetCore.RouteAnalyzer,但它适用于 Core 2.0

edo*_*o.n 7

我只想把它们全部打印出来。

所以,我猜这是为了调试目的?

在这种情况下,这将使您开始:

public HomeController(IActionDescriptorCollectionProvider provider)
{
    this.provider = provider;
}

public IActionResult Index()
{
    var urls = this.provider.ActionDescriptors.Items
        .Select(descriptor => '/' + string.Join('/', descriptor.RouteValues.Values
                                                                        .Where(v => v != null)
                                                                        .Select(c => c.ToLower())
                                                                        .Reverse()))
        .Distinct()
        .ToList();

    return Ok(urls);
}
Run Code Online (Sandbox Code Playgroud)

这将以以下格式返回响应:

[
    "/post/delete",
    "/users/index/administration",
    "/users/details/administration",
]
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,这里IActionDescriptorCollectionProvider有很多。