c# - 如何在中间件中获取没有 uri 参数的 Url - AspCore
问题描述
我正在实现一个自定义中间件,我试图在没有 Uri 参数的情况下访问请求 url。
我在实现自定义中间件时可以访问的所有内容是HttpContext
public async Task InvokeAsync(HttpContext context)
HttpContext
有一个属性Request
,该属性Path
具有可以返回带有 URI 参数的完整 url 的属性。
例如:/api/v1/customer/12345
我想要得到的是路线api/v1/customer/{customerId}
这是可行的吗?
解决方案
这是可行的吗?
不,你不能。路由是一个 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;
}
}
推荐阅读
- excel - 如何在插入公式的过程中使用变量
- c# - 如何将派生类限制为仅具有某些类型的成员
- terminal - 带有目录和虚拟环境的 Zsh 提示符
- python - “docopt.DocoptLanguageError: --replicas must not have an argument”仅适用于“replicas”,而不是“replication”
- html - 仅当数据库中存在图像时如何设置 div 的动态背景图像
- python - 如何安装部分来自本地目录和部分来自公共存储库的依赖项?
- python - Is auth customization secure in django?
- kubernetes - How are Kuberenetes secrets stored on Amazon EKS
- javascript - 如何优化对象写入性能?
- ruby-on-rails - Postgres fails to connect to a solr Docker container