2016-06-16 2 views
3

Я выполняю следующее в моей программе asp.net core 1.0 web api (.NET Framework) .cs указать, какой порт я хочу, чтобы мой веб-апи ех работать в только в целях развития:Задание url (port), который должен использовать asp.net core 1.0 WebAPI.exe для использования в program.cs как для prod, так и для dev

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(); 
} 

Однако, когда я публикую для производства этой линия вызывает WebAPI ошибки, так как я хочу, чтобы ех использовать производство web-api url ie productionWeb/api/values, а не localhost: 12012/values ​​

Есть ли в любом случае я могу получить лучшее из того, что оба мира могут указать, что я хочу, чтобы он работал на порту 1201 2 для целей развития и производственный адрес для целей производства?

Мое настоящее решение - просто прокомментировать строку перед публикацией.

+0

Куда вы публикуете? Azure? ваш собственный сервер? –

+1

Вы запускаете его за IIS на производстве? UseUrls должен быть до UseIISIntegration, иначе вы перезаписываете настройки IIS - я описал его здесь: https://blog.3d-logic.com/2016/06/08/running-asp-net-core-applications-with-iis-and- Antares /. Обратите внимание, что рекомендуется запускать приложения ASP.NET Core за прокси-сервером, например IIS или nginx. – Pawel

+0

Да, я публикую в реальном IIS. Итак, вы говорите, если я изменю порядок, я должен быть прав? –

ответ

9

При использовании IIS вы переписываете URL-адрес IIS (базовый модуль AspNet), чтобы приложение прослушивало его, позвонив по номеру .UseUrls() после .UseIISIntegration(). Вы должны изменить порядок этих двух вызовов, чтобы .UseIISIntegration() после .UseUrl(). .UseIISIntegration() не будет касаться URL-адресов, которые вы установили, если вы не работаете с IIS, поэтому в разработке ваше приложение все равно будет прослушивать порт 12012. При работе с IIS .UseIISIntegration() будет перезаписываться URL-адрес, чтобы прослушивать порт, который IIS сказал ему слушать. Я написал post on running Asp.NET Core apps with IIS and Azure Websites, в котором объясняется, как все работает, включая этот нюанс.