C# 如果url包含特定的子字符串,如何路由到特定的控制器端点?

C# 如果url包含特定的子字符串,如何路由到特定的控制器端点?,c#,.net,asp.net-core,C#,.net,Asp.net Core,我似乎不能理解正确的语法 我想将url中任何位置包含“foo”的所有内容路由到特定的控制器/操作 如何在的当前配置中做到这一点 app.UseEndpoints(opt => { opt.MapDefaultControllerRoute(); }); 您可以在startup类中为每个控制器和操作的端点使用此选项: app.UseEndpoints(endpoints => {

我似乎不能理解正确的语法

我想将url中任何位置包含“foo”的所有内容路由到特定的控制器/操作

如何在的当前配置中做到这一点

        app.UseEndpoints(opt =>
        {
            opt.MapDefaultControllerRoute();
        });

您可以在startup类中为每个控制器和操作的端点使用此选项:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "foo/{controller=Home}/{action=Index}/{id?}");
        });
如果要用于特定的控制器或操作,请在默认值以上使用此端点:

endpoints.MapControllerRoute(
                name: "foo",
                pattern: "foo/{ControllerName}/{ActionName}/{id?}");

您可以在startup类中为每个控制器和操作的端点使用此选项:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "foo/{controller=Home}/{action=Index}/{id?}");
        });
如果要用于特定的控制器或操作,请在默认值以上使用此端点:

endpoints.MapControllerRoute(
                name: "foo",
                pattern: "foo/{ControllerName}/{ActionName}/{id?}");

您可以尝试使用中间件,检查context.request.path,如果它包含“foo”,请将path更改为您想要的。下面是一个工作演示:

cs(将中间件放在Configure方法的顶部):

Test2Controller:

 public IActionResult TestUrl()
        {
            return Ok();
        }
结果:

您可以尝试使用中间件,检查context.request.path,如果它包含“foo”,请将path更改为您想要的。下面是一个工作演示:

cs(将中间件放在Configure方法的顶部):

Test2Controller:

 public IActionResult TestUrl()
        {
            return Ok();
        }
结果:

我不知道你的意思。你读过这本书了吗。有很多方法可以执行您正在执行的操作,包括路由属性(请参见该页)。@gunr2171我想使用中间件实现这一点,以便使用包含特定子字符串的url将所有内容路由到特定控制器/操作。UseEndpoints中最简单的语法是什么?马普杰?地图?模式?我不知道为什么需要这个,但通过创建basecontroller,您可以重写OnActionExecuting方法。你可以在这里做路线method@M.skr我不想让另一个控制器覆盖OnActionExecuting,我想让UseEndpoints中的简单语法涵盖这一点。我不确定你的意思。你读过这本书了吗。有很多方法可以执行您正在执行的操作,包括路由属性(请参见该页)。@gunr2171我想使用中间件实现这一点,以便使用包含特定子字符串的url将所有内容路由到特定控制器/操作。UseEndpoints中最简单的语法是什么?马普杰?地图?模式?我不知道为什么需要这个,但通过创建basecontroller,您可以重写OnActionExecuting方法。你可以在这里做路线method@M.skr我不想再制造另一个控制器并重写OnActionExecuting,我希望可以弹出到UseEndpoints中的简单语法能够涵盖这一点。这不是答案,这不是答案,我希望某些特定的模式可以在UseEndpoints中工作,但这同样有效。谢谢我希望某些特定的模式能在UseEndpoints中工作,但这同样有效。谢谢