c# - 如何在中间件中获取没有uri参数的Url - Asp Core

标签 c# asp.net-core asp.net-web-api asp.net-core-middleware

我正在实现一个自定义中间件,并且尝试访问不带 Uri 参数的请求 url。

在实现自定义中间件时我可以访问的所有内容是HttpContext

    public async Task InvokeAsync(HttpContext context)

HttpContext 有一个属性 Request,它有一个 Path 属性,可以返回带有 URI 参数的完整 url。

例如:/api/v1/customer/12345我想要获取的是路由api/v1/customer/{customerId}

这可行吗?

最佳答案

Is this something fesiable?

不,你不能。路由是一个 ASP.NET Core MVC 概念,因此它的存在只能在 ASP.NET Core 的 MVC 中间件中找到。

不确定您的中间件用来做什么。解决方法是您可以在操作过滤器中完成您的工作:

public class LogActionFilter : IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context)
    {

    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        //get the request route template
        var routeTemplate = context.ActionDescriptor.AttributeRouteInfo.Template;
    }
}

关于c# - 如何在中间件中获取没有uri参数的Url - Asp Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62171294/

相关文章:

c# - 添加新 WebForm 时 Visual Studio 2015 中的错误

asp.net-core - 带有 AppplicationDbContext 的身份脚手架

angularjs - 使用 AngularJs、WebAPI 和 OAuth2 时以明文形式获取用户角色以及 JWT

c# - 使用 C# 从 API 下载 PDF 文件

javascript - Web 方法仅在标记为静态时才有效,否则无效

c# - 正则表达式中的匹配函数为空?

c# - 从 c# 中的 namevaluecollection 填充对象数组

c# - 当方法的名称为 ...Async 时,会发生异常 "System.InvalidOperationException: No route matches the supplied values"

asp.net-core - IWebHost WebHostBuilder BuildWebHost 有什么区别

web-services - Web API 和 Web 服务有什么区别?