Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何获得路由别名?_Asp.net Core_Asp.net Core Mvc_Asp.net Core 1.0_Asp.net Core Middleware - Fatal编程技术网

Asp.net core 如何获得路由别名?

Asp.net core 如何获得路由别名?,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,asp.net-core-middleware,Asp.net Core,Asp.net Core Mvc,Asp.net Core 1.0,Asp.net Core Middleware,我希望使用ASP.NET核心的别名创建一个路由系统 在我的数据库中,我的所有路由都有相应的别名,当用户请求服务器我的应用程序查找与别名对应的路由时 现在,我想使用恢复的路由访问正确的控制器和正确的操作 一个例子将比一篇长篇演讲更为明确(我想做的事在括号内): 用户连接到myapp.com/hello/i/am/an/alias->应用程序找到相应的路由,即/MyController/Index(->应用程序使用MyController将索引视图发送给用户) 如果有人知道怎么做,我就选D谢谢 编辑

我希望使用ASP.NET核心的别名创建一个路由系统

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

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

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

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

如果有人知道怎么做,我就选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=新路径字符串(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);

我怀疑他希望它是动态的,并且来自数据库,就像CMS系统中使用的slug()一样,每次在运行时创建一个新的slug时都需要重建路由表,这是不推荐的。是的,Tseng,就是这样