2016-06-16 8 views
3

我在我的asp.net核心1.0 web api(.NET Framework)程序中執行以下操作的.cs指定我希望我的網頁API exe文件,以僅用於開發運行在哪個端口:指定一個asp.net核心1.0 WebAPI.exe應該在program.cs中爲prod和dev使用的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(); 
} 

然而,當我發佈到生產此行引起的WebAPI到錯誤,因爲我想要的exe使用生產web-api網址ie productionWeb/api/values而不是localhost:12012 /值

有沒有反正我可以得到兩個世界的最好能夠指定我希望它在端口12012上運行de prod目的的發展目的和生產網址?

我現在的解決方案是在出版之前註釋掉該行。

+0

你在哪裏發佈? Azure的?你自己的服務器? –

+1

你是否在生產環境中運行IIS? UseUrls應該在UseIISIntegration之前,否則你會覆蓋IIS設置 - 我在這裏描述:https://blog.3d-logic.com/2016/06/08/running-asp-net-core-applications-with-iis-and-安塔爾/。請注意,建議在像IIS或nginx這樣的代理之後運行ASP.NET Core應用程序。 – Pawel

+0

是的,我將發佈到實際的IIS。所以你說如果我改變順序,我應該是對的? –

回答

9

使用IIS時,您正在覆蓋url(IIS(核心模塊AspNet))通過.UseIISIntegration()之後調用.UseUrls()通知應用程序收聽。您應該更改這兩個通話的順序,以便.UseIISIntegration().UseUrl()之後。 .UseIISIntegration()不會觸及你設置的網址,如果你沒有使用IIS運行,所以在開發過程中,你的應用程序仍然會在端口12012上進行監聽。當與IIS運行時,.UseIISIntegration()將覆蓋網址以偵聽IIS監聽的端口。我寫了一個post on running Asp.NET Core apps with IIS and Azure Websites,它解釋了事情如何工作,包括這個細微差別。

相關問題