在Netcore 2.2上运行`dotnet Myapp.dll`时覆盖applicationUrl

时间:2019-03-10 16:44:38

标签: c# asp.net-core

假设我们采用从默认VS模板之一生成的默认asp netcore 2.2应用程序。

运行dotnet publish --Release后,我们将获得一个包含应用程序二进制文件的文件夹。

运行dotnet MyDemo.dll会在默认http://localhost:5000上为应用加注星标。

如何更改默认端口和主机?

我尝试设置ASPNETCORE_URLS环境变量无效。

一些其他上下文:我知道对于本地开发,我们可以在launchSettings.json中设置不同的配置文件,并且可以使用dotnet run命令选择要运行的配置文件。但是,发布后就没有launchSettings.json了,直接使用dotnet MyDemo.dll运行二进制文件似乎并不允许进行任何其他配置。

请参阅下面的Startup类。

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });


        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseStaticFiles();
        app.UseCookiePolicy();
        app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        });

        app.UseMvc();
    }
}

1 个答案:

答案 0 :(得分:1)

您应该拥有Program.cs,用于配置Kestrel Web服务器。在这些配置中,应该可以为主机名和端口指定url。检查类似这样的内容:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseUrls("http://localhost:60000", "http://localhost:60001")
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

您可以在docs

中找到其他方法来配置端点

顺便说一句,对于ContinuosIntegration / ContinuosDelivery,在json中设置端点设置会更好,因此也许您可以考虑改善CI / CD管道。

另外,应该可以在命令行中使用类似this的东西来指定url