c# - Razor Pages 在路由中添加扩展
问题描述
在 ASP.NET Core Razor Pages 中,如何将路由添加到所有页面,例如“.html”以进行扩展。
例子: /home 变成 /home.html
解决方案
使用 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","");
}
}
}
推荐阅读
- r - 使用 For 循环时如何创建向量?
- android - SmartLock 不显示用户个人资料照片
- android - Dll 未找到异常:AkSoundEngine
- unit-testing - 我们可以在一个项目中同时运行 Spock 测试用例和 Junit 5 测试用例吗?
- flutter - flutter bloc streambuilder with refreshindicator 重建两次
- typescript - 使用带有简单添加的 Typescript Generic 不起作用
- sql - 如何删除 BigQuery 架构中的重复字段?
- php - Group by if two column in different row has the same value?
- google-distancematrix-api - 谷歌距离矩阵中应该如何使用多个起点/目的地?
- python-3.x - 写一个函数接受一个两个单词的字符串,如果两个单词都以相同的字母开头,则返回 True