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