1

我寻找使用 ASP.NET Core 的别名创建路由系统。

在我的数据库中,我的所有路由都具有相应的别名,当用户请求服务器时,我的应用程序会查找与别名对应的路由。

现在,我想使用恢复的路由来访问正确的控制器和正确的操作。

一个例子将比长篇演讲更明确(我想做的是在括号中):

用户连接到 myapp.com/hello/i/am/an/alias -> 应用找到对应的路由,即 /MyController/Index(-> 应用使用 MyController 将 Index 视图发送给用户)

如果有人知道该怎么做,我会接受 :D 谢谢

编辑:实际上,最好是编辑 HttpContext,但我认为这是不可能的

4

2 回答 2

1

好的,我找到了答案!

可以像这样在上下文中编辑路径: context.Request.Path = new PathString(newPath);

所以我使用了一个始终返回 true 的 MapWhen 并使用数据库的响应编辑 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);
于 2016-08-23T08:03:35.310 回答
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.
});
于 2016-08-22T13:12:14.853 回答