首页 > 解决方案 > 如何在中间件中解析 ~/ aka application relative url?

问题描述

我正在努力将用户重定向到 ASP.NET Core 中间件中的正确位置。

我要归档的是应用程序相对重定向,因此如果我的应用程序以https://www.example.com/app运行,则生成的任何链接都应植根于那里。

例如 ~/path 应该解析为 /app/path。

我尝试使用 UrlHelperFactory,但那是 MVC,需要一个 ActionContext,它不存在于中间件中。

这是我的中间件的代码示例:

app.Map(pathMatch, appMap =>
{
    // [... more code ...]

    appMap.Use((context, next) =>
    {
        var nextUrl = context.Request.Query["nextUrl"];
        var applicationBase = context.Request.PathBase;

        if (nextUrl == StringValues.Empty || !UrlUtil.IsLocalUrl(nextUrl[0]))
        {
            context.Response.Redirect(applicationBase);
        }
        else
        {
            context.Response.Redirect(applicationBase.Add(nextUrl[0]));
        }

        return Task.CompletedTask;
    });
});

标签: asp.net-core

解决方案


推荐阅读