そのため、ASP.NET Core 2.1の登場により、KestrelはHTTPエンドポイントとともにHTTPSエンドポイントを自動的に作成し、デフォルトのプロジェクトテンプレートがHTTPからHTTPSにリダイレクトするようにセットアップされています(元に戻すのは簡単です)。
しかし、私の質問は...私のプロジェクトでHTTPSを完全に無効にするにはどうすればよいですか?私はドキュメントを読んで、HTTPSのさまざまな構成設定を試しましたが、それをオフにしてHTTPプロジェクトを実行することはできません。
クレイジーですか、それとも何かが足りないのですか。これは非常に簡単だと思います。
私がやりたいことを達成するための適切な方法は、具体的には.UseKestrel()でKestrelを構成し、次のように単一のアドレスを指定することでした:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
})
.UseStartup<Startup>();
デフォルト設定を上書きし、Kestelの起動時にこの警告を表示することに影響します。
warn: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.
2番目のアドレスが指定されている場合、次のように、アドレスは組み込みの開発者証明書で保護されると想定されます。
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
options.Listen(IPAddress.Loopback, 5443); //HTTPS port
})
.UseStartup<Startup>();
もちろん、ここで説明するように、SSLアドレスを特に保護することができます。
これは実稼働セットアップに必要です。
Startup.csで、ミドルウェアを削除します
app.UseHttpsRedirection();
Visual Studio 2017を使用している場合、次のことができます。
これにより、launchSettings.jsonファイルのiisExpress設定が更新されます。
プロジェクトのファイルProperties/launchSettings.json
で、キーapplicationUrl
を探します。次のようなものがあります。
...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...
https
エンドポイントを削除すれば完了です。
編集
@Xorcistが述べたように、ファイルlaunchSettings.json
は公開されていません。したがって、上記のソリューションは開発環境でのみ機能します。 httpsを無効にし、一般に、実稼働環境と開発環境の両方でリッスンするURLを構成するには、次のいずれかを実行することもできます。
--urls
のdotnet run
パラメーターを使用すると、launchSettings.json
のapplicationUrl
と同じ効果があります。たとえば、dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001
。繰り返しますが、使用したくないものは削除してください。
ASPNETCORE_URLS
環境変数でも同じことが実現できます。
appsettings.json
でKestrelエンドポイントを構成することもできます(2.0では実行できないようです)。useUrls
拡張メソッドWebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000")
を使用しても同じことが実現できます。他のソリューションを好むのは、これがアプリケーションのエンドポイントであり、アプリケーションを再コンパイルしないと変更できないためです。可能なオプションはすべて、 Microsoft Docs on this で詳しく説明されています。
dotnet
CLIにはこのためのテンプレートがあります。
dotnet new webapi --no-https
Program.csで、次のようにUseUrlsを追加します。
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
そして、Startup.csで以下を削除/コメントします。
app.UseHttpsRedirection();