这个问题通常是由于Blazor在添加到MVC应用程序时默认地为它的路由添加了一个路由前缀(即“Blazor”)。这可能会导致MVC应用程序中的两个或多个控制器具有相同的路由,从而导致多个匹配的终点。解决这个问题的解决方法如下:
1.在Startup.cs文件中,通过显式指定前缀(例如“myblazor”)来配置Blazor的路由前缀。
app.UseEndpoints(endpoints => { endpoints.MapBlazorHub("/myblazor/{*path}"); endpoints.MapFallbackToPage("/myblazor/{*path}", "/_Host"); });
2.使用[Route]属性为所有控制器和操作指定唯一的路由:
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{
[HttpGet]
public ActionResult
注意:确保所有路由都是唯一的。如果您的MVC应用程序包含多个控制器,则请确保它们都具有唯一的路由,并且不包含冲突的操作路由。如果您在操作方法中不使用[Route]属性,则请注意路由的默认值可能会导致路由冲突。