首页 > 解决方案 > Razor Pages 在路由中添加扩展

问题描述

在 ASP.NET Core Razor Pages 中,如何将路由添加到所有页面,例如“.html”以进行扩展。

例子: /home 变成 /home.html

标签: c#razorasp.net-core.net-corerazor-pages

解决方案


使用 URL Rewriting Middleware,尝试如下代码:

1.在配置中

app.UseRewriter(new RewriteOptions()
                           .Add(RewriteRules.RedirectRequests)
                           .Add(RewriteRules.ReWriteRequests)
                           );

2.自定义一个包含RedirectRequests和ReWriteRequests的类

   public class RewriteRules
{
    public static void RedirectRequests(RewriteContext context)
    {
        var request = context.HttpContext.Request;

        if (request.Path.Value.EndsWith("/", StringComparison.OrdinalIgnoreCase))
        {
            context.HttpContext.Response.Redirect("/Home.html");
        }
        else if(!request.Path.Value.EndsWith(".html", StringComparison.OrdinalIgnoreCase))
        {
            context.HttpContext.Response.Redirect($"{ request.Path.Value }.html");
        }
    }

    public static void ReWriteRequests(RewriteContext context)
    {
        var request = context.HttpContext.Request;            

        if (request.Path.Value.EndsWith(".html", StringComparison.OrdinalIgnoreCase))
        {
            context.HttpContext.Request.Path = context.HttpContext.Request.Path.Value.Replace(".html","");

        }
    }

}

参考:https ://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x


推荐阅读