エントリポイントで使用WebHostBuilder
する場合Main
、バインド先のポートを指定するにはどうすればよいですか?
デフォルトでは5000を使用します。
この質問は新しいASP.NET Core API(現在1.0.0-RC2)に固有のものであることに注意してください。
hosting.json
と、バインディングを構成するためのコマンドラインまたはコマンドラインの使用方法について説明します。
エントリポイントで使用WebHostBuilder
する場合Main
、バインド先のポートを指定するにはどうすればよいですか?
デフォルトでは5000を使用します。
この質問は新しいASP.NET Core API(現在1.0.0-RC2)に固有のものであることに注意してください。
hosting.json
と、バインディングを構成するためのコマンドラインまたはコマンドラインの使用方法について説明します。
回答:
ASP.NET Core 3.1では、カスタムポートを指定する主な方法が4つあります。
--urls=[url]
次のように起動します。dotnet run --urls=http://localhost:5001/
appsettings.json
して、Urls
ノードを追加します。{
"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();
}
UseUrls
はASP.NETチームがセルフホスティングシナリオに推奨するアプローチです(値自体をハードコードする必要はありません)。とは言っても、構成ビルダーを使用してその方法を説明するために私の回答を更新しました。
hosting.json
。RC2の情報を強制的に読むことだけが必要です(アナウンスを参照)。
using Microsoft.Extensions.Configuration.CommandLine;
Kestrelセクションをasp.net core 2.1+ appsettings.jsonファイルに挿入できます。
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
},
dotnet publish
ます。
VS docker統合でこれを行う人を助けるためのフォローアップ回答。google appengineの「柔軟な」環境を使用して実行するには、ポート8080に変更する必要がありました。
Dockerfileには次のものが必要です。
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
また、docker-compose.ymlのポートも変更する必要があります。
ports:
- "8080"
代替ソリューションはhosting.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();
}
urls
アプリを変更せずにホスティングURLを指定できます。
Properties/launchSettings.json
プロジェクトディレクトリにファイルを作成し、次のように入力します。
{
"profiles": {
"MyApp1-Dev": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
}
dotnet run
コマンドはlaunchSettings.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 : //docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
[ProjectRoot]/Properties/launchSettings.json
ありますが、美しいのは問題なく動作することです。
dotnet run
するには、ソースコードにアクセスする必要があります。
使用する場合 dotnet run
dotnet run --urls="http://localhost:5001"
.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://localhost:5001
またはマルチURLで
dotnet <yours>.dll --urls="http://localhost:5001,https://localhost:5002"
Dockerコンテナ(Linuxバージョン)でホストすると、「接続が拒否されました」というメッセージが表示される場合があります。その場合、ローカルホストのループバックの代わりに「このマシン上のすべてのIPアドレス」を意味するIPアドレス0.0.0.0を使用して、ポート転送を修正できます。
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000/")
.Build();
host.Run();
}
}
.Net Core 3.1では、Microsoft Docに従ってください。これは非常に簡単です。 。kestrel-aspnetcore-3.1
要約する:
以下のConfigureServicesセクションをCreateDefaultBuilderに追加します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>();
});
以下の基本的な設定をappsettings.json
ファイルに追加します(Microsoftの記事でより多くの設定オプション):
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
}
プロジェクトのPublish / Debug / Release binariesフォルダーでCMDまたはコンソールを開き、次を実行します。
dotnet YourProject.dll
http:// localhost:5002でサイト/ apiの探索をお楽しみください
以下を使用して、Net Core 3.1のポートの問題を修正しました
Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureWebHost(x => x.UseUrls("https://localhost:4000", "http://localhost:4001"))
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
次を使用してアプリケーションにアクセスできます
http://localhost:4000
https://localhost:4001
launchSettings.json
から調べProperties
ます。でポートを変更できますlaunchUrl
。