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

时间:2016-06-16 14:44:11

标签: c# asp.net asp.net-web-api asp.net-core asp.net-core-1.0

我在我的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<Startup>()
        .UseUrls(new string[1] { "http://*:12012" })
        .Build();

    host.Run();
}

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

无论如何,我可以充分利用这两个世界能够指定我希望它在端口12012上运行以用于开发目的而生产网址是否用于生产目的?

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

1 个答案:

答案 0 :(得分:9)

使用IIS时,您在.UseUrls()之后通过调用.UseIISIntegration()来覆盖IIS(AspNet核心模块)告诉应用程序收听的URL。您应该更改这两个调用的顺序,以便.UseIISIntegration()位于.UseUrl()之后。如果您没有运行IIS,.UseIISIntegration()将不会触及您设置的网址,因此在开发中您的应用程序仍将在端口12012上侦听。使用IIS .UseIISIntegration()运行时将覆盖侦听端口IIS的URL告诉它听。我写了一篇post on running Asp.NET Core apps with IIS and Azure Websites来解释事情是如何运作的,包括这种细微差别。