C# 在SPA应用程序中未点击我的控制器操作

C# 在SPA应用程序中未点击我的控制器操作,c#,asp.net,asp.net-core,asp.net-core-routing,C#,Asp.net,Asp.net Core,Asp.net Core Routing,我有一个带有React前端的ASP.NET核心应用程序。以下是myStartup.cs中定义的路由 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapSpaFallbackRoute( name: "spa-catchall",

我有一个带有React前端的ASP.NET核心应用程序。以下是my
Startup.cs
中定义的路由

app.UseMvc(routes =>
{
    routes.MapRoute(
       name: "default",
       template: "{controller=Home}/{action=Index}/{id?}");

    routes.MapSpaFallbackRoute(
       name: "spa-catchall",
       defaults: new { controller = "Home", action = "Index" });
});
我在我的
HomeController
中创建了一个测试动作,它将提供一个静态页面,但我不会点击它。我总是以
Home/Index
结束,它被定义为“一网打尽”的路线

这是我在
HomeController
下的测试操作:

[Route("test")]
[AllowAnonymous]
public IActionResult Test()
{
   return View();
}
我试图通过转到
http://localhost:123/test
但它不起作用。我也试过
http://localhost:123/home/test
。那也没用


我在这里遗漏了什么?

如果
Home
控制器定义为:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [Route("test")]
    [AllowAnonymous]
    public IActionResult Test()
    {
        return View();
    }
}
然后请求
http://localhost:123/test
应点击
Test()
操作。属性路由比传统路由具有优先级。因为您已经为
Test
操作使用了
Route
属性,所以无论您在
UseMvc
调用中映射了什么路由,这些路由都不会被使用

为什么
http://localhost:123/test
没有命中,是因为在控制器级别上也有
路由
属性。如果是
Route(“home”)
Test()可以通过
http://localhost:123/home/test
url。如果要保留控制器级属性,则将
TestAction()
的路由属性从
[route(“test”)]
更改为
[route(/test”)]
将使
http://localhost:123/test
到达
TestAction()


如果这仍然没有帮助,请用
HomeController

的完整代码更新问题。我犯了一个愚蠢的错误,但我接受了你的回答,因为其中有很多很好的解释。我感谢你详细的回答。