Jasmine Ivy
Jasmine Ivy

Reputation: 1

ASP.NET MVC API controller not hitting

I have added an ASP.NET Web API to an ASP.NET MVC 5 web application project developed in Visual Studio 2019.

WebApiConfig:

public class WebApiConfig {
    public static void Register(HttpConfiguration config) {
         config.MapHttpAttributeRoutes();
         config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
         );
    }
}

Global.asax.cs:

public class MvcApplication : HttpApplication {
    protected void Application_Start() {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Api Controller Method:

// GET: api/Web
public IEnumerable<string> Get() {
      return new string[] { "value1", "value2" };
}

When I hit https://localhost:44324/api/web the browser gives this error:

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /api/web

Upvotes: 0

Views: 440

Answers (1)

aditya srivastava
aditya srivastava

Reputation: 723

In MVC 5 routing you can try using attributing routing to overcome this error.

The solution is shown below.

API Controller Method:

//write this above the class and below namespace
    [ApiController]
    [Route("[controller]")]
// GET: api/Web
    [HttpGet]
    public IEnumerable<string> Get() {
          return new string[] { "value1", "value2" };
    }

When you hit https://localhost:44324/api/web but here "Web" is controller id it's not then you have to mention that first and then the method the browser will not give you an error:

Upvotes: 0

Related Questions