2017-03-01 87 views
0

我有一個Visual Studio 2015解決方案,它包含一個ASP.NET Core Web API以及一個ASP.NET Core MVC應用程序。運行ASP.NET MVC + Web API:獲取路線

我打算在MVC應用程序中使用API​​,它們都在同一時間運行。

例如,API是在localhost:60170運行,我必須送到"api/[controller]"控制器如下:

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

現在,我如何才能在我的MVC應用程序的API的路線,沒有硬編碼的API的路徑,即localhost:60170

+0

您可以使用[Hyprlinkr](https://github.com/ploeh/Hyprlinkr)。 – NightOwl888

+0

沒有ASP.NET Core Web Api這樣的東西。 MVC和Web Api已經在Core中合併。 –

+0

@ NightOwl888:不要以爲這會在這裏工作。問題似乎是用戶創建了兩個單獨的項目,現在想共享他們之間的路線。 –

回答

1

您的控制器可以同時擁有API方法和MVC方法。

您可以先在Startup.cs定義默認的MVC路線:

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

,卸下控制器屬性[Route("api/[controller]")],而是用它來裝點控制器類中的特定的API方法,例如:

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

public IActionResult ABC(..){ 

} 

對於MVC方法,只是將它們作爲正常:

[HttpGet] 

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

} 

請勿硬編碼localhost地址。

+0

我不認爲我理解。至少,如何在不引用API端口的情況下訪問API方法? – manatttta

+0

對不起,我誤解了意圖。我的解決方案允許您有一個項目來處理API服務和MVC Web前端部分。 –