自托管的Net Core 3应用程序不采用端口设置

时间:2019-12-20 15:49:27

标签: c# self-hosting .net-core-3.0

我很愚蠢地问这个问题,因为有关Net Core托管的文章很多,但是我已经尝试了一切,但仍然遇到问题。

我正在尝试更改自托管Web服务使用的端口。我已经更改了launchSettings.json文件。

"MyService": {
      "commandName": "Project",
      "environmentVariables": {
        "ASPNETCORE_URLS": "http://*:51248",
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:51248"
    },
    "MyService": {
      "commandName": "Project",
      "environmentVariables": {
        "ASPNETCORE_URLS": "http://*:51248",
        "ASPNETCORE_ENVIRONMENT": "Release"
      },
      "applicationUrl": "http://localhost:51248"
    }

我还试图通过直接配置来设置端口:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<MyServiceWorker>();
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:51248");
                    webBuilder.UseStartup<Startup>();
                })
                .ConfigureWebHost(config => { config.UseUrls("http://*:51248"); })
                .UseWindowsService()
                .UseSerilog();
    }

如果我通过Visual Studio运行一切正常,但是如果直接运行可执行文件,它仍然使用端口5000。如果将其作为Windows服务运行,它似乎会选择一些随机端口。

我访问了数十个网站,但未找到解决方案。有人有建议吗?

2 个答案:

答案 0 :(得分:1)

可以有很多选择,其中之一来自here

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace testmvccore31
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.ConfigureKestrel(serverOptions =>
                    {
                        serverOptions.Listen(IPAddress.Any, 51248);
                    });
                });
    }
}

答案 1 :(得分:0)

我觉得自己很愚蠢,但是我会贴出来,以防别人帮忙。我发现,如果应用程序作为Windows服务运行,.UserUrls确实可以工作。从Visual Studio启动时,launchSettings.json设置将起作用。作为控制台应用程序运行时,我无法更改侦听端口。

事实证明,问题出在我测试应用程序的方式上。希望没有人会浪费很多时间做同一件事。