自托管Net Core 3应用不走端口设置
Self-hosted Net Core 3 application does not take port settings
我觉得问这个问题很傻,因为有几十篇关于 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服务,好像是随便选了个端口。
我打了几十个网站,都没有找到解决办法。有人有什么建议吗?
可以有很多选项,其中一个来自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);
});
});
}
}
我觉得很傻,但我会 post 以防它能帮助别人。我发现如果应用程序 运行 作为 Windows 服务,.UseUrls
确实有效。 launchSettings.json
设置在从 Visual Studio 内启动时有效。 运行作为控制台应用程序时,我无法更改侦听端口。
原来这个问题是我测试应用程序的方式造成的。希望没有其他人会浪费很多时间做同样的事情。
我觉得问这个问题很傻,因为有几十篇关于 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服务,好像是随便选了个端口。
我打了几十个网站,都没有找到解决办法。有人有什么建议吗?
可以有很多选项,其中一个来自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);
});
});
}
}
我觉得很傻,但我会 post 以防它能帮助别人。我发现如果应用程序 运行 作为 Windows 服务,.UseUrls
确实有效。 launchSettings.json
设置在从 Visual Studio 内启动时有效。 运行作为控制台应用程序时,我无法更改侦听端口。
原来这个问题是我测试应用程序的方式造成的。希望没有其他人会浪费很多时间做同样的事情。