【发布时间】:2019-11-07 00:35:18
【问题描述】:
我正在尝试让 URL 重写与 MVC/端点路由结合使用。以下是我的 Startup.Configure 方法的相关部分:
app.UseRewriter(new RewriteOptions().Add(new RewriteRuleTest()));
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
和重写规则测试:
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?
【问题讨论】:
-
我刚刚测试并确认,如果我使用 app.UseMvc 而不是 app.UseEndpoints,它可以工作。我想我在这里遗漏了一些明显的东西。
标签: asp.net-core asp.net-core-mvc