如何拥有路由别名?
How to have routes aliases?
我正在寻找使用 ASP.NET 核心的别名创建路由系统。
在我的数据库中,我的所有路由都带有相应的别名,当用户请求服务器时,我的应用会查找与别名对应的路由。
现在,我想使用恢复的路由访问正确的控制器和正确的操作。
举个例子比长篇大论更明确(括号里是我想做的):
用户连接到myapp。com/hello/i/am/an/alias -> 应用找到相应的路由/MyController/Index( -> 应用使用MyController 将Index 视图发送给用户)
如果有人知道怎么做,我采纳:D 谢谢
编辑:实际上,编辑 HttpContext 会更好,但我认为这是不可能的
我想你会想要 运行 在 Startup.cs
的 Configure 方法中做这样的事情
app.UseMvc(routes =>
{
routes.MapRoute(
name: "path1",
template: "hello/i/am/an/alias",
defaults: {controller="MyController", action="Index"});
routes.MapRoute(
name: "path2",
template: "i/am/another/alias",
defaults: {controller="MyOtherController", action="Index"});
// etc.
});
好的,我找到答案了!!
可以像这样在上下文中编辑路径:
context.Request.Path = new PathString(newPath);
所以我使用了 MapWhen,它总是 return true 并使用数据库的响应编辑 context.Request.Path,而 mapHandler 只需调用 app.UseMvc:
private void HandleMap(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
app.MapWhen(context => {
string newPath = findNewPath();
context.Request.Path = new PathString(newPath);
return true;
}, HandleMap);
我正在寻找使用 ASP.NET 核心的别名创建路由系统。
在我的数据库中,我的所有路由都带有相应的别名,当用户请求服务器时,我的应用会查找与别名对应的路由。
现在,我想使用恢复的路由访问正确的控制器和正确的操作。
举个例子比长篇大论更明确(括号里是我想做的):
用户连接到myapp。com/hello/i/am/an/alias -> 应用找到相应的路由/MyController/Index( -> 应用使用MyController 将Index 视图发送给用户)
如果有人知道怎么做,我采纳:D 谢谢
编辑:实际上,编辑 HttpContext 会更好,但我认为这是不可能的
我想你会想要 运行 在 Startup.cs
的 Configure 方法中做这样的事情app.UseMvc(routes =>
{
routes.MapRoute(
name: "path1",
template: "hello/i/am/an/alias",
defaults: {controller="MyController", action="Index"});
routes.MapRoute(
name: "path2",
template: "i/am/another/alias",
defaults: {controller="MyOtherController", action="Index"});
// etc.
});
好的,我找到答案了!!
可以像这样在上下文中编辑路径:
context.Request.Path = new PathString(newPath);
所以我使用了 MapWhen,它总是 return true 并使用数据库的响应编辑 context.Request.Path,而 mapHandler 只需调用 app.UseMvc:
private void HandleMap(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
app.MapWhen(context => {
string newPath = findNewPath();
context.Request.Path = new PathString(newPath);
return true;
}, HandleMap);