2017-03-01 4 views
0

Ich habe eine Visual Studio 2015-Lösung, die eine ASP.NET Core Web API zusammen mit einer ASP.NET Core MVC-Anwendung enthält.ASP.NET MVC + Web API läuft: Routen erhalten

Ich beabsichtige, die API in der MVC-Anwendung zu verwenden, und beide laufen zur gleichen Zeit.

Zum Beispiel wird die API auf localhost:60170 läuft und ich habe einen Controller "api/[controller]" geroutet wie folgt:

namespace JobManager.WAPI.Controllers 
{ 
    [Route("api/[controller]")] 
    public class ValuesController : Controller 
    { 

Nun, wie bekomme ich die Routen in meiner MVC-Anwendung auf die API, ohne die hartzucodieren Pfad zur API, zB localhost:60170?

+0

Sie könnten [Hyprlinkr] (https://github.com/ploeh/Hyprlinkr) verwenden. – NightOwl888

+0

Es gibt keine ASP.NET Core Web API. MVC und Web Api haben sich in Core zusammengeschlossen. –

+0

@ NightOwl888: glaube nicht, dass das hier funktioniert. Das Problem scheint zu sein, dass der Benutzer zwei separate Projekte erstellt hat und nun Routen zwischen ihnen teilen möchte. –

Antwort

1

Ihr Controller kann sowohl die API-Methoden als auch die MVC-Methoden "Hand-in-Hand" verwenden.

Sie können zunächst die Standard-MVC Route in Startup.cs definieren:

 // mvc 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

in der Controller-Klasse, entfernen Sie das Controller Attribut [Route("api/[controller]")], sondern es verwenden, um die spezifische API-Methode innerhalb der Controller-Klasse zu dekorieren, zum Beispiel :

[Route("api/[controller]/XYZ/{..}")] 

public IActionResult ABC(..){ 

} 

Für Methoden MVC, verwenden sie nur als normal:

[HttpGet] 

public async Task<IActionResult> Index(..){ 

} 

Die localhost Adresse nicht hart codieren.

+0

Ich glaube nicht, dass ich verstanden habe. Wie kann es auf die API-Methoden zugreifen, ohne dass ich mich auf den API-Port bezogen habe? – manatttta

+0

Entschuldigung, ich habe die Absicht missverstanden. Meine Lösung ermöglicht es Ihnen, ein Projekt zu haben, das sowohl den API-Service als auch den MVC-Web-Front-End-Bereich abwickelt. –