我正在尝试将URL重写与MVC /端点路由结合使用。这是我的Startup.Configure方法的相关部分:
app.UseRewriter(new RewriteOptions().Add(new RewriteRuleTest()));
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});
和RewriteRuleTest:
public class RewriteRuleTest : IRule
{
public void ApplyRule(RewriteContext context)
{
HttpRequest request = context.HttpContext.Request;
if (request.Path.Value.ToLower() == "/index")
{
request.Path = "/Home/Privacy";
context.Result = RuleResult.SkipRemainingRules;
}
}
}
这似乎遵循建议,但是按/ index时得到404。我可以在上面的if语句中设置一个断点。我也可以直接导航到/ Home / Privacy,它可以正常工作。我已经尝试了RuleResult的所有三个选项。为什么重写不提供修改后的URL?