当在主入口点使用WebHostBuilder时,我如何指定它绑定到的端口?
默认情况下,它使用5000。
请注意,这个问题是特定于新的ASP。NET Core API(目前在1.0.0-RC2中)。
当在主入口点使用WebHostBuilder时,我如何指定它绑定到的端口?
默认情况下,它使用5000。
请注意,这个问题是特定于新的ASP。NET Core API(目前在1.0.0-RC2中)。
当前回答
另一种解决方案是使用主机。Json在项目的根目录中。
{
"urls": "http://localhost:60000"
}
然后在program。cs中
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", true)
.Build();
var host = new WebHostBuilder()
.UseKestrel(options => options.AddServerHeader = false)
.UseConfiguration(config)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
其他回答
您可以指定托管URL,而不需要对应用程序进行任何更改。
创建Properties/launchSettings。Json文件,然后像这样填充它:
{
"profiles": {
"MyApp1-Dev": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
}
dotnet运行命令应该选择您的启动设置。Json文件,并将其显示在控制台中:
C:\ProjectPath [master ≡]
λ dotnet run
Using launch settings from C:\ProjectPath\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\ProjectPath
Now listening on: http://localhost:5001
Application started. Press Ctrl+C to shut down.
详情:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments
在ASP。NET Core 3.1,有4种主要的方法来指定一个自定义端口:
使用命令行参数,用——url =[url]启动你的.NET应用程序:
dotnet run --urls=http://localhost:5001/
使用appsettings。通过添加一个url节点:
{
"Urls": "http://localhost:5001"
}
使用环境变量,ASPNETCORE_URLS=http://localhost:5001/。 使用UseUrls(),如果你喜欢以编程方式完成:
public static class Program
{
public static void Main(string[] args) =>
CreateHostBuilder(args).Build().Run();
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(builder =>
{
builder.UseStartup<Startup>();
builder.UseUrls("http://localhost:5001/");
});
}
或者,如果你仍然在使用web主机生成器而不是通用的主机生成器:
public class Program
{
public static void Main(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://localhost:5001/")
.Build()
.Run();
}
如果使用dotnet运行
dotnet run --urls="http://localhost:5001"
在。net Core 3.1上,只需遵循微软的文档,它非常简单:kestrel-aspnetcore-3.1
总结:
Add the below ConfigureServices section to CreateDefaultBuilder on Program.cs: // using Microsoft.Extensions.DependencyInjection; public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((context, services) => { services.Configure<KestrelServerOptions>( context.Configuration.GetSection("Kestrel")); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); Add the below basic config to appsettings.json file (more config options on Microsoft article): "Kestrel": { "EndPoints": { "Http": { "Url": "http://0.0.0.0:5002" } } } Open CMD or Console on your project Publish/Debug/Release binaries folder and run: dotnet YourProject.dll Enjoy exploring your site/api at your http://localhost:5002
以上。net core 2.2方法Main使用WebHost.CreateDefaultBuilder(args)支持args
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
您可以构建您的项目并像这样进入bin运行命令
dotnet <yours>.dll --urls=http://0.0.0.0:5001
或者使用多url
dotnet <yours>.dll --urls="http://0.0.0.0:5001;https://0.0.0.0:5002"
编辑2021/09/14
在。net core 3.1之后,你可以修改文件appsettings。Config section Urls和Kestrel都可以工作。你可以用任何一种。url会更简单。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"MicrosoftHostingLifetime": "Information"
}
},
"Urls": "http://0.0.0.0:5002",
//"Kestrel": {
// "EndPoints": {
// "Http": {
// "Url": "http://0.0.0.0:5000"
// },
// "Https": {
// "Url": "https://0.0.0.0:5001"
// }
// }
//},
"AllowedHosts": "*"
}
使用http://0.0.0.0:5000可以从远程连接访问web服务器,如果你设置为http://localhost:5000,则只能在你的计算机中访问。
要使Kestrel设置工作,您应该更改项目中的Program.cs中的代码。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices((context, services) =>
{
services.Configure<Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions>(context.Configuration.GetSection("Kestrel"));
});
webBuilder.UseStartup<Startup>();
});