Asp.net core mvc 如何将所有请求路由到HomeController

Asp.net core mvc 如何将所有请求路由到HomeController,asp.net-core-mvc,Asp.net Core Mvc,我想将所有请求(不包括少数例外情况)路由到我的HomeController 因此,无论我是转到/home/index还是/about/或/sport/soccer,它都会指向主控台(但URL仍保留在浏览器中,因此我不想使用重定向) 装饰控制器最初是可行的,但它不允许出现异常 [Route("{*url}")] public async Task<IActionResult> Index() 如果您只需要一个操作(例如索引),则可以尝试为操作设置路由: public class Ho

我想将所有请求(不包括少数例外情况)路由到我的HomeController

因此,无论我是转到
/home/index
还是
/about/
/sport/soccer
,它都会指向主控台(但URL仍保留在浏览器中,因此我不想使用重定向) 装饰控制器最初是可行的,但它不允许出现异常

[Route("{*url}")]
public async Task<IActionResult> Index()

如果您只需要一个操作(例如索引),则可以尝试为操作设置路由:

public class HomeController
{
    [Route("{*url}")]
    public IActionResult Index(string url)
    {
    }
}

如果您的异常只有这两种情况,那么您可以将
regex
条件添加到
[Route(“{*url}”)]
的属性中以确定

 public class HomeController : Controller
    {
        [Route("{*url:regex(^(?!Error$|MySecret$).*$)}")] 
        public IActionResult Index()
        {
        }
    }
以下是测试结果:


这很好,但似乎不允许任何例外。正如我在OP中所写,我仍然希望定义一个ErrorController(或route)
 public class HomeController : Controller
    {
        [Route("{*url:regex(^(?!Error$|MySecret$).*$)}")] 
        public IActionResult Index()
        {
        }
    }