如何更改 ASP.NET Core API 中的默认控制器和操作?

Posted

技术标签:

【中文标题】如何更改 ASP.NET Core API 中的默认控制器和操作?【英文标题】:How to change the default controller and action in ASP.NET Core API? 【发布时间】:2018-12-16 10:53:44 【问题描述】:

我正在创建一个 ASP.NET Core API 应用程序,目前,当一个人创建一个新项目时,有一个名为 Values 的控制器,默认情况下,API 在您运行时会打开它。因此,我删除了该控制器并添加了一个名为 Intro 的新控制器,并在其中添加了一个名为 Get 的操作。在Startup.cs 文件中,我有以下几行代码:

app.UseMvc(opt =>

    opt.MapRoute("Default",
        "controller=Intro/action=Get/id?");
);

我的 Intro 控制器如下所示:

[Produces("application/json")]
[Route("api/[controller]")]
[EnableCors("MyCorsPolicy")]
public class IntroController : Controller

    private readonly ILogger<IntroController> _logger;

    public IntroController(ILogger<IntroController> logger)
    
        _logger = logger;
    

    [HttpGet]
    public IActionResult Get()
    
        // Partially removed for brevity
    

但是,当我再次运行 API 时,默认情况下它会尝试导航到 /api/values,但由于我删除了 Values 控制器,现在我得到了 404 not found 错误。如果我手动导航到 /api/intro,我会得到 Intro 控制器内的 Get 操作提供的结果。我如何确保在 API 运行时(例如通过 Debug->Start without Debugging)它默认从 Intro 控制器获取 Get 操作?

【问题讨论】:

【参考方案1】:

您可以在Properties 节点的launchSettings.json 文件中更改它。应该有字段launchUrl,其中包含默认启动网址

【讨论】:

谢谢!这花了我很长时间才找到,并且在 VS 中搜索并没有为我找到它。【参考方案2】:

随着 ASP .Net Core 的更新版本,MVC 路由不像以前那么突出,现在有通用路由可以处理 Web API、MVC 和 SignalR 以及其他类型的路由的路由。

如果您使用的是更高版本,而不是专门调用 app.UseMvc,您可以使用通用端点配置来执行此操作:

app.UseEndpoints(endpoints =>

   endpoints.MapControllerRoute("default", "controller=Account/action=login/id?");
  // Create routes for Web API and SignalR here too...
);

Accountlogin 是您的新默认控制器和操作。这些可以是 MVC 或 Web API 控制器方法。

【讨论】:

以上是关于如何更改 ASP.NET Core API 中的默认控制器和操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 .NET Core 3.1 API 中的路由错误

Asp.Net Core Web API 应用程序:如何更改监听地址?

如何更改我的 .NET core 6 API 的默认端口号

如何更改 asp.net core 1 中的令牌响应?

如何通过 ASP.NET Core 中的 api 控制器更新 IdentityUser 的自定义属性?

ASP.NET Core 2.1 API JWT 令牌 Session.id 在每次请求时都会更改