2016-05-13 1 views
2

Ai-je raison quand je dis, Web API peut fonctionner sur OWIN et MVC 5 ne peut pas?MVC 5, API Web et Owin

Donc, dans mon projet je dois encore mon Global.asax avec public class WebApiApplication : System.Web.HttpApplication

Au moment où j'ai mon owin Startup.cs qui ressemble à ceci:

public void Configuration(IAppBuilder app) 
{ 
    var httpConfig = new HttpConfiguration 
    { 

    }; 


    WebApiConfig.Register(httpConfig); 

    app.UseWebApi(httpConfig); 
    app.UseCors(CorsOptions.AllowAll); 

    RouteConfig.RegisterRoutes(RouteTable.Routes);//MVC Routing 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

est-RouteConfig.RegisterRoutes (RouteTable. Routes)?

Chaque fois que je passe en revue à toute voie MVC-je obtenir un 404.

+1

N ° MVC5 utilise OWIN. WebApi était et est entièrement inutile. vNext unifie à nouveau tout. Même avant vNext, il n'y a jamais eu une seule chose que WebApi a fourni que vous ne pouviez pas faire vous-même dans MVC avec un couple d'aides ou d'installer plusieurs paquets nuget pour fournir des choses comme Content Negotiation. –

Répondre

1

Ai-je raison de dire que l'API Web peut fonctionner sur OWIN et que MVC 5 ne le peut pas?

pas clairement ce que vous demandez, mais OWIN n'est pas serveur mais il est un middleware qui aident à injecter des pipelines pour les demandes pré-processus par étapes et il ne dépend pas WebAPI ou une version MVC mais si dépend serveur d'hébergement ont des spécifications OWIN mises en œuvre.

Est-ce que RouteConfig.RegisterRoutes (RouteTable.Routes) est suffisant?

oui ceci fonctionnera pour Asp.net MVC mais pour l'API Web, vous devez enregistrer les routes dans une classe de configuration séparée. Habituellement, la configuration WebAPI peut ressembler comme spécifié dans modèle par défaut Asp.net WebAPI (> vs2013)

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

Assurez-vous que l'URL que vous demandez correspond soit à l'itinéraire des modèles MVC ou de WebAPI.

+0

Merci pour la clarification, les routes mvc ne sont pas ramassés. C'est très étrange. Je ne peux pas voir ce que j'ai pu faire de façon incorrecte. –

5

Oui, vous avez raison, MVC 5 (basé dans ASP.NET 4) nécessite IIS, il ne peut pas l'auto-hôte. MVC 6 (basé sur ASP.NET 5, maintenant appelé ASP.NET Core 1) n'a pas cette limitation. Si vous avez besoin d'auto-hébergement, commencez à jouer avec ASP.NET Core 1 (c'est incroyablement génial) ou si vous avez besoin de RTM maintenant, utilisez WebAPI.