How to change the default controller and action in ASP.NET Core API?

18,702

Solution 1

You can change it in launchSettings.json file in Properties node. There should be field launchUrl which contains default launching url

Solution 2

With later version of ASP .Net Core, MVC routing is less prominent than it once was, there is general routing now in place which can handle routing of Web APIs, MVC and SignalR amongst other kinds of routes.

If you are using later versions, and not specifically calling app.UseMvc you can do this with the generalised Endpoints configuration:

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

Where Account and login are your new default controller and actions. These can be MVC or Web API controller methods.

Share:
18,702
tinker
Author by

tinker

Updated on August 21, 2022

Comments

  • tinker
    tinker over 1 year

    I'm creating an ASP.NET Core API app, and currently, and when one creates a new project there is a controller named Values, and by default the API opens it when you run. So, I deleted that controller and added a new controller named Intro, and inside it an action named Get. In the Startup.cs file, I have the following lines of code:

    app.UseMvc(opt =>
    {
        opt.MapRoute("Default",
            "{controller=Intro}/{action=Get}/{id?}");
    });
    

    And my Intro controller looks like this:

    [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
        }
    }
    

    But, again when I run the API, it by default tries to navigate to /api/values, but since I deleted the Values controller, now I get a 404 not found error. If I manually then navigate to /api/intro, I get the result that is provided from my Get action inside the Intro controller. How can I make sure that when the API run (for example through Debug->Start Without Debugging) that it by default gets the Get action from the Intro controller?