【问题标题】:How to get Url without uri paramters in Middleware - AspCore如何在中间件中获取没有uri参数的Url - Asp Core
【发布时间】:2020-09-22 01:26:47
【问题描述】:

我正在实现一个自定义中间件,我试图在没有 Uri 参数的情况下访问请求 url。

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

    public async Task InvokeAsync(HttpContext context)

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

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

这是可行的吗?

【问题讨论】:

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


    【解决方案1】:

    这是可行的吗?

    不,你不能。路由是一个 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 2015-09-25
      • 2012-01-27
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多