我正在尝试实现以下方案: 请求了网址https://www.example.com/[some_value] 如果[some_value]是已知的(我有一个列表),则应将其路由(不重定向且url中没有更改) https://www.example.com/page,其中“网页”为[some_value]
否则,如果未知, 它应该重定向到
https://www.example.com/y/[some_value],其中“ y”是固定的。
我添加了以下内容:
{
endpoints.MapControllerRoute("api", "api/{**path}");
// endpoints.MapRazorPages();
endpoints.MapDynamicPageRoute<RouteTranslator>("{page}");
});
和我的routeTranslator:
public class RouteTranslator : DynamicRouteValueTransformer
{
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
if ( values.Keys.Contains("page") )
{
var page = values["page"]?.ToString();
if ( page!= null )
{
switch (page)
{
case "KNOWN_VALUE":
//Do nothing
break;
default:
values["page"] = "y";
values["some_value"] = page;
break;
}
}
}
return values;
}
}
我测试了是否在路由翻译器中找到了代码,但是得到了404。如果我请求/ y / [some_value],则会收到具有所需响应的答复。 我想念什么?