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