运行ASP.NET MVC + Web API:获取路由

时间:2017-03-01 19:14:25

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc

我有一个Visual Studio 2015解决方案,其中包含ASP.NET Core Web API以及ASP.NET Core MVC应用程序。

我打算在MVC应用程序中使用API​​,它们都在同时运行。

例如,API正在localhost:60170上运行,我的控制器路由到"api/[controller]",如下所示:

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

现在,如何在我的MVC应用程序中获取API的路径,而无需硬编码API的路径,即localhost:60170

1 个答案:

答案 0 :(得分: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地址进行硬编码。