18

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?

0

2 Answers 2

53

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

Sign up to request clarification or add additional context in comments.

1 Comment

Thank YOU! this took me forever to find, and search in VS did not find it for me.
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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.