如何更改 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...
);
Account 和 login 是您的新默认控制器和操作。这些可以是 MVC 或 Web API 控制器方法。
【讨论】:
以上是关于如何更改 ASP.NET Core API 中的默认控制器和操作?的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net Core Web API 应用程序:如何更改监听地址?