'New controller does not respond to requests

I created a new project from the ASP.NET Core Web API template in Visual Studio, and attempted to add a new controller, but I get a 404 response with this message when trying to GET from it:

Cannot GET /navigation

My program.cs:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (builder.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

The working controller that came with the template:

using Microsoft.AspNetCore.Mvc;

namespace Test.API.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

My new controller:

using Microsoft.AspNetCore.Mvc;
using Test.API.Navigation;

namespace Test.API.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class NavigationController : ControllerBase
    {
        public NavigationController()
        {

        }

        [HttpGet(Name = "GetNavigation")]
        public IEnumerable<NavigationItem> Get()
        {
            return new List<NavigationItem>
            {
                new NavigationItem()
                {
                    Title = "Home",
                    Url = "test",
                    AltText = "Home page"
                }
            };
        }
    }
}

How can I get this controller to work? The project seems to have no extra config files that are relevant, just launchsettings.json and applicationsettings.json.

I tried changing the name of the WeatherForecastController, which led to it returning the same response, so it feels like it is hardcoded somehow.



Solution 1:[1]

Did you update your proxy.conf.js file? Change the context to /navigation. The target is your target you have now.

const PROXY_CONFIG = [
  {
    context: [
      "/navigation",
    ],
    target: "https://localhost:7105",
    secure: false
  }
]

module.exports = PROXY_CONFIG;

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Matt