tutorial route net mvc multiple maphttproute httpconfiguration asp c# asp.net-mvc-5 routes asp.net-web-api2 owin

c# - route - Problema al usar IAppBuilder.UseWebApi



web api 2 route config (1)

Estoy creando un SPA (aplicación de página Singe) usando WebApis en ASP .NET MVC5. Para WebAPis estoy usando el enrutamiento de atributos. Para solicitudes que no sean API web, configuré una ruta Catch-All que se asigna al controlador Home y la acción Index Aquí está mi código

Tengo el siguiente código de configuración en mi archivo StartUp.cs

using System.Web.Routing; [assembly: OwinStartup(typeof(MyApp.Startup))] namespace MyApp { public class Startup { public void Configuration(IAppBuilder app) { GlobalConfiguration.Configure(WebApiConfig.Register); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //app.UseWebApi(GlobalConfiguration.Configuration); } } }

Mi método WebApiConfig.Register es el siguiente

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

Para las rutas que no sean WebApis, tengo la siguiente ruta registrada

public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "CatchAll", url: "{*url}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }

Ahora en el método de Configuración en la clase de Inicio, si descomenta esta línea

app.UseWebApi(GlobalConfiguration.Configuration)

e intento acceder a cualquier ruta, obtengo este error

<Error> <Message> No HTTP resource was found that matches the request URI ''http://localhost:17212/orders''. </Message> <MessageDetail> No type was found that matches the controller named ''Home''. </MessageDetail> </Error>

Por qué pasó esto ? ¿Está bien mantener esta línea comentada?


Estás mezclando configuraciones. app.UseWebApi es principalmente para OWIN pipline no MVC, por lo que cuando usa esa configuración, niega su configuración de MVC a medida que se encarga de la inspección de las solicitudes entrantes. Si está mezclando tanto MVC como API web, puede mantener esa línea comentada de forma segura.