我希望使用ASP.NET Core的别名来创建路由系统。
在我的数据库中,我的所有路由都带有相应的别名,当用户请求服务器时,我的应用程序会查找与别名对应的路由。
现在,我想使用恢复的路径来访问正确的控制器和正确的操作。
一个例子比长篇大论更明确(我想做的是在括号中):
用户连接到myapp.com/hello/i/am/an/alias - >该应用找到相应的路线,即/ MyController / Index( - >该应用使用MyController将Index视图发送给用户)
如果有人知道怎么做,我会:D谢谢
编辑:实际上,编辑HttpContext会更好,但我认为不可能
答案 0 :(得分:1)
好的,我找到了答案!!
可以在上下文中编辑路径,如下所示:
context.Request.Path = new PathString(newPath);
所以我使用MapWhen总是返回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);
答案 1 :(得分:0)
我认为你想在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.
});