我可以在 ASP.NET Core 2.0 预览版的“appsettings.json”文件中设置监听 URL 吗?

问题描述 投票:0回答:5

我正在创建一个 ASP.NET Core 2.0 应用程序以在 .NET Core 2.0 运行时运行,这两个运行时目前都处于预览版本。但是,我不知道如何让 Kestrel 使用默认的

http://localhost:5000
监听 URL 之外的其他内容。

我能在 Google 上找到的大多数文档都谈到了

server.urls
设置,即使在 1.0 预览版中,该设置似乎也已更改为
urls
。但是,这两种方法都不起作用(打开调试日志记录后 Kestrel 告诉我没有配置监听端点)。

很多文档还讨论了

hosting.json
并且我无法使用默认的 appsettings.json 文件。但是,如果我比较加载新配置的推荐方法,这看起来与新的
WebHost.CreateDefaultBuilder
方法的作用非常相似,除了它加载文件 appsettings.json.

我目前不明白文件 appsettings.json

IConfigureOptions<T>
是如何相关的(如果有的话),所以我的问题可能源于对
KestrelServerOptionsSetup
实际作用缺乏了解。

asp.net-core .net-core appsettings kestrel-http-server
5个回答
25
投票

要在 appsettings.json 中设置监听 URL,请添加“Kestrel”部分:

"Kestrel": {
    "EndPoints": {
        "Http": {
            "Url": "http://localhost:5000"
        }
    }
}

参考:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2


21
投票

我用这个工作了:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseConfiguration(new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("hosting.json", optional: true)
            .Build()
        )
        .UseStartup<Startup>()
        .Build();

还有 hosting.json 文件:

{ "urls": "http://*:5005;" }

6
投票

对我来说就像以前一样

WebHost.CreateDefaultBuilder(args)
    .UseConfiguration( new ConfigurationBuilder().AddCommandLine(args).Build() )
    .UseStartup<Startup>()
    .Build();

然后

dotnet myapp.dll --urls "http://*:5060;"

2
投票

以上都不适合我。这对我有用:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Listen(System.Net.IPAddress.Loopback, 44306, listenOptions =>
                {
                    listenOptions.UseHttps("mysertificate.pfx", "thecertificatePassword");
                });
            })
        .Build();

(将44306更改为自己喜欢的端口)

这个 StackOverflow 答案中可能有很多帮助


0
投票

这些解决方案对 2024 年 3 月运行 net8.0 和带有顶级语句的最小 WebAPI 的我来说都没有真正起作用。

我终于发现了可以添加到我的 Program.cs 中的代码,效果很好:

var portNumber = 5270;
builder.WebHost.ConfigureKestrel((context, serverOptions) =>
{
    serverOptions.Listen(System.Net.IPAddress.Loopback, portNumber);
});

这将我的应用程序设置为在 127.0.0.1:5270 上运行。

© www.soinside.com 2019 - 2024. All rights reserved.