我正在实现一个自定义中间件,并且尝试访问不带 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/