如何重写asp.net核心的URL

问题描述

使用asp.net核心,而我正在尝试从重写URL: “产品/索引/地区/类型” 至 : “产品/地区类型”

region和type是不固定的单词。相反,他们指的是该区域,无论其名称如何,也指类型

解决方法

如果我理解您的要求正确,那么您应该使用中间件。

尝试一下:

public class UrlRewriterMiddleware
{
    private readonly RequestDelegate _next;

    public SelfRequestRouterMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if(context.Request.Path.Value.Contains("product/index/region/type")
               context.Request.Path = context.Request.Path.Value.Replace("product/index/region/type","products/region-type");

        await _next.Invoke(context);
    }
}

,然后在启动时:

app.UseMiddleware<UrlRewriterMiddleware>();