0

Salut J'ai un contrôleur comme indiqué ci-dessous,Carte Web Api MapHttpRoute à base Url

[RoutePrefix("")] 
public class ApiInformationController : Controller 
{ 
    public ActionResult Index() 
    { 
     var info = new ApplicationInformation 
     { 
      ApplicationName = "Test App", 
      DatabaseName = "SQL Server 2012", 
      ApplicationVersion = "3.10.0" 
     }; 
     return Json(info, JsonRequestBehavior.AllowGet); 
    } 
} 

J'ai également configuré les routes en WebApiConfig que je ne veux pas utiliser RouteConfig séparément,

private static void ConfigureRoutes(HttpConfiguration config) 
    { 
     _config = config; 

     // Web API routes 
     _config.MapHttpAttributeRoutes(); 

     _config.Routes.MapHttpRoute("Default", "{controller}/{action}/{id}", 
      new {controller = "ApiInformation", action = "Index", id = RouteParameter.Optional}); 
     _config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", 
      defaults: new {id = RouteParameter.Optional}); 
    } 

Lorsque j'essaie d'accéder à l'URL de base, je souhaite que l'information Api soit affichée. Par exemple quand j'essaie http://localhost:23175/ Je voudrais que l'API appelle l'index de ApiInformationController. Qu'est-ce que je fais mal ici?

actuel quand je l'appelle l'URL que je reçois la réponse suivante, enter image description here

+0

-t-il travailler sans MapHttpAttributeRoutes? – Usman

+2

utilisez-vous un projet MVC avec un projet API ou API? – Ashiquzzaman

+0

@Vinay - Ashiquizzman a un point. MVC et Web Api sont des frameworks distincts, qui ont chacun leur propre routage, et vous devez vous assurer qu'ils ont des URL qui ne sont pas en conflit. Sur la base de vos balises MVC dans la question, il semble que vous essayez de mettre votre routage MVC dans la configuration Web Api (ou, vous doublez simplement sur vos routes, ce qui n'est pas une bonne chose). Les routes MVC doivent être ajoutées à votre fichier RouteConfig.cs, pas ici. – NightOwl888

Répondre

2

Nécessité de modifier routeTemplate de MapHttpRoute.

WebApiConfig comme,

config.Routes.MapHttpRoute("Default", "{controller}/{action}/{id}", 
     new { controller = "ApiInformation", action = "Index", id = RouteParameter.Optional }); 

Et comment vous recevez,

[System.Web.Http.HttpGet] 
public IHttpActionResult Index() 
{ 
    var info = new ApplicationInformation 
    { 
     ApplicationName = "Test App", 
     DatabaseName = "SQL Server 2012", 
     ApplicationVersion = "3.10.0" 
    }; 
    return Json(info); 
} 

espère que cela vous aidera

+0

Non, cela n'a pas résolu le problème. – Vinay

+0

Quel est le résultat lorsque vous demandez à partir de http: // localhost: 23175/api? – arslanaybars

+0

Ici http: // localhost: 23175/api est utilisé pour interroger les données qui fonctionnent correctement. Mais si un utilisateur essaie juste d'accéder à l'URL de base comme ceci: http: // localhost: 23175 je voudrais afficher ApiInformation.Can je réalise cela en utilisant ApiController au lieu de MVC Controller. – Vinay