web-dev-qa-db-ja.com

ASP.NET Core 2.1 + Kestrel(HTTPSを無効にする方法)

そのため、ASP.NET Core 2.1の登場により、KestrelはHTTPエンドポイントとともにHTTPSエンドポイントを自動的に作成し、デフォルトのプロジェクトテンプレートがHTTPからHTTPSにリダイレクトするようにセットアップされています(元に戻すのは簡単です)。

しかし、私の質問は...私のプロジェクトでHTTPSを完全に無効にするにはどうすればよいですか?私はドキュメントを読んで、HTTPSのさまざまな構成設定を試しましたが、それをオフにしてHTTPプロジェクトを実行することはできません。

クレイジーですか、それとも何かが足りないのですか。これは非常に簡単だと思います。

31
Xorcist

私がやりたいことを達成するための適切な方法は、具体的には.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アドレスを特に保護することができます。

https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x

これは実稼働セットアップに必要です。

20
Xorcist

Startup.csで、ミドルウェアを削除します

app.UseHttpsRedirection();
14
Tairan

Visual Studio 2017を使用している場合、次のことができます。

  1. プロジェクトのプロパティに移動します。 (右クリック>プロパティ)
  2. [デバッグ]タブをクリックします。
  3. [Webサーバー設定]で、[SSLを有効にする]の選択を解除します。
  4. 保存してビルドし、再試行します。

これにより、launchSettings.jsonファイルのiisExpress設定が更新されます。

13
Abhishek Kumar

プロジェクトのファイルProperties/launchSettings.jsonで、キーapplicationUrlを探します。次のようなものがあります。

...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...

httpsエンドポイントを削除すれば完了です。

編集

@Xorcistが述べたように、ファイルlaunchSettings.jsonは公開されていません。したがって、上記のソリューションは開発環境でのみ機能します。 httpsを無効にし、一般に、実稼働環境と開発環境の両方でリッスンするURLを構成するには、次のいずれかを実行することもできます。

  • --urlsdotnet runパラメーターを使用すると、launchSettings.jsonapplicationUrlと同じ効果があります。たとえば、dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001。繰り返しますが、使用したくないものは削除してください。

  • ASPNETCORE_URLS環境変数でも同じことが実現できます。

  • この質問 に対する@Konstantinの回答で述べたように、ASP Net Core 2.1では、appsettings.jsonでKestrelエンドポイントを構成することもできます(2.0では実行できないようです)。
  • 最後に、useUrls拡張メソッドWebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000")を使用しても同じことが実現できます。他のソリューションを好むのは、これがアプリケーションのエンドポイントであり、アプリケーションを再コンパイルしないと変更できないためです。

可能なオプションはすべて、 Microsoft Docs on this で詳しく説明されています。

8
joanlofe

dotnet CLIにはこのためのテンプレートがあります。

dotnet new webapi --no-https
0
Clay

Program.csで、次のようにUseUrlsを追加します。

WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();

そして、Startup.csで以下を削除/コメントします。

app.UseHttpsRedirection();
0
BlackBrain