指定asp.net核心1.0 WebAPI.exe应该在program.cs中为prod和dev使用的url(端口)

我在我的asp.net core 1.0 web api(.NET Framework)program.cs中执行以下操作,以指定我希望我的web api exe运行的端口仅用于开发目的:

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

但是,当我发布到生产时,这行会导致WebAPI出错,因为我希望exe使用生产web-api url即productionWeb / api / values而不是localhost:12012 / values

无论如何,我可以得到两个世界中最好的能够指定我希望它在端口12012上运行以用于开发目的和生产URL用于产品目的吗?

我目前的解决方案是在发布之前注释掉该行。

使用IIS时,您正在覆盖IIS(AspNet核心模块)通过.UseUrls()之后调用.UseUrls()来监听应用程序的URL。 您应该更改这两个调用的顺序,以便.UseIISIntegration().UseUrl() 。 如果你没有运行IIS,则.UseIISIntegration()不会触及你设置的URL,因此在开发中你的应用程序仍然会在端口12012上侦听。当运行IIS时.UseIISIntegration()会覆盖url以侦听端口IIS告诉它听。 我写了一篇关于使用IIS和Azure网站运行Asp.NET核心应用程序的post,该文章解释了这些细微的工作方式。