2016-06-16 2 views
3

asp.net 코어 1.0 웹 API (.NET Framework) 프로그램에서 다음을 수행하고 있습니다. .cs 나는 내 웹 API를 exe 인은 개발 목적에서 실행하려는 포트 지정 : 내가 생산에 게시 할 때asp.net 코어 1.0 WebAPI.exe가 prod와 dev 모두에 대해 program.cs에서 사용해야하는 URL (포트) 지정

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .UseUrls(new string[1] { "http://*:12012" }) 
     .Build(); 

    host.Run(); 
} 

,이 라인은 내가 exe 인은 생산을 사용하고자하기 때문에 오류 위해 WebAPI 원인 web-api url 즉, localhost : 12012/values가 아닌 productionWeb/api/values ​​

어쨌든 두 세계에서 내가 가장 좋은 결과를 얻을 수 있도록 최선을 다해서 포트 12012에서 de 생산 목적 및 생산 목적의 URL?

내 현재 솔루션은 게시하기 전에 줄을 주석으로 처리하는 것입니다.

+0

게시처는 어디입니까? 하늘빛? 당신의 서버? –

+1

프로덕션 환경에서 IIS를 실행합니까? UseIrls는 UseIISIntegration 전에 있어야하며, 그렇지 않으면 IIS 설정을 덮어 씁니다. 여기에서 설명했습니다 : https://blog.3d-logic.com/2016/06/08/running-asp-net-core-applications-with-iis-and- 안타레스 /. IIS 나 nginx와 같은 프록시 뒤에 ASP.NET 코어 응용 프로그램을 실행하는 것이 좋습니다. – Pawel

+0

예 실제 IIS에 게시하고 있습니다. 그래서 내가 순서를 바꾼다면 내가 잘해야한다고 말하는거야? –

답변

9

IIS를 사용할 때 IIS (AspNet Core Module)가 .UseIISIntegration() 이후에 .UseUrls()을 호출하여 수신 대기하는 앱에 URL을 덮어 쓰는 중입니다. .UseIISIntegration().UseUrl() 뒤에 오도록이 두 호출의 순서를 변경해야합니다. .UseIISIntegration()은 IIS에서 실행되지 않는 경우 설정 한 URL을 터치하지 않으므로 응용 프로그램은 여전히 ​​포트 12012에서 수신 대기합니다. .UseIISIntegration()을 실행하면 IIS가 수신 대기 할 URL을 덮어 씁니다. 나는이 뉘앙스를 포함하여 일들이 어떻게 작용하는지 설명하는 post on running Asp.NET Core apps with IIS and Azure Websites을 썼다.