2017-03-01 1 views
0

ASP.NET 핵심 웹 응용 프로그램과 함께 ASP.NET 핵심 웹 API가 포함 된 Visual Studio 2015 솔루션이 있습니다.ASP.NET MVC + 웹 API 실행 경로 : 경로 가져 오기

MVC 응용 프로그램에서 API를 사용하려고하며 둘 다 동시에 실행됩니다. 예를 들어

, API는 localhost:60170에서 실행되는 다음과 같이 나는 "api/[controller]"로 라우팅 컨트롤러를 가지고 :

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

을 지금, 나는 하드 코딩하지 않고 API 내 MVC 응용 프로그램에서 경로를 얻는 방법 API 경로, 즉 localhost:60170?

+0

[Hyprlinkr] (https://github.com/ploeh/Hyprlinkr)을 사용할 수 있습니다. – NightOwl888

+0

ASP.NET Core Web API와 같은 것은 없습니다. MVC와 웹 API가 코어에 병합되었습니다. –

+0

@ NightOwl888 : 여기서는 효과가 없을 것이라고 생각하지 마십시오. 문제는 사용자가 두 개의 개별 프로젝트를 작성했으며 이제는 두 프로젝트간에 경로를 공유하려고하는 것 같습니다. –

답변

1

컨트롤러에는 API 메소드와 MVC 메소드가 모두 있습니다.

먼저 Startup.cs에 기본 MVC 경로를 정의 할 수 있습니다 :

컨트롤러 클래스에서
 // mvc 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

, 예를 들어, 컨트롤러 클래스 내부의 특정 API 방법을 장식하는 데 사용하는 대신, 컨트롤러 속성 [Route("api/[controller]")]을 제거 :

MVC 방법에 대한
[Route("api/[controller]/XYZ/{..}")] 

public IActionResult ABC(..){ 

} 

, 그냥 보통으로 사용할 :

[HttpGet] 

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

} 

localhost 주소를 하드 코드하지 마십시오.

+0

나는 내가 이해할 것이라고 생각하지 않는다. 최소한 API 포트를 참조하지 않고 API 메소드에 액세스 할 수 있습니까? – manatttta

+0

미안하지만, 나는 그 의도를 오해하고 있습니다. 내 솔루션을 사용하면 API 서비스와 MVC 웹 프런트 엔드 부분을 모두 처리 할 수있는 프로젝트를 가질 수 있습니다. –