私はさまざまなことを試しましたが、私は自分の机の上で頭を叩いて疲れています。ASP.Net Core:HTTPSを強制的に呼び出すapp.Use()呼び出しの場所
私はASP.NET Core MVC Webサイトを作成しています。このサイトは、SSLで機能をテストしようとするまでうまく動作します。 3番目の項目は、他のリンクの数に再び登場まま、私はその作業を取得する複数の方法を試みた
- ASP.Net Core Enforcing HTTPS (Longing To Know)
- Testing SSL in ASP.NET Core (Wildermuth's Blog)
- Redirect to HTTPS (StackOverflow)
:私は、次のリンクを試してみました。 StartupクラスのConfigure
メソッドのいくつかの場所にコード設定を移動しました。 app.UseMvc()
コールの前にコードセグメントを置くと、私は絶対に何も得られません。ホームページ(SSLの下にない)が出てこないので、リンクをたどることはできません。 app.UseMvc()
コールの後に配置すると、[RequireHttps]
属性を使用するメソッドは「存在しない」リンクに移動します。私はMVCを使いたいので、意味があります。しかし、HTTPSをどのようにテストできますか?
app.Use(async (context,next)...
のコードはどこにありますか?
私の現在のStartup.cs
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
var sslPort = Configuration.GetValue<int>("iisSetting:iisExpress:sslPort");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.Use(async (context, next) =>
{
if (context.Request.IsHttps)
await next();
else
{
var sslPortStr = ((sslPort == 0) || (sslPort == 443)) ? string.Empty : ($":{sslPort}");
var sslUrl = $"https://{context.Request.Host.Host}{sslPort}{context.Request.Path}";
context.Response.Redirect(sslUrl);
}
}); // */
}
UPDATE:(2017年1月26日)私は手動でブラウザのURLにSSLポート番号を入力した場合、システムはSSLに入ることを発見した /HTTPS ...しかし、それはセキュリティを必要としないページでさえそこにとどまります。
私がしようとしているのは、正しいポート番号を手動で入力する必要がなく、テスト目的のためだけにURLに表示させることです。
上記のように、これを試行すると、ホームページでHTTP 404が表示されます。私はHTTPSポートを持っているプロジェクトのプロパティのボックスにチェックを入れました。私はそれを避けることができれば、すでにプロジェクトに入っている以上にKestrelを使用しないことを好むだろう。私は実際にあなたが投稿する前にあなたが提供したリンクに従っていましたが、私はWildermuthが意味する結果を得ていません。 –
IISExpressで実行する限り、自己署名証明書が機能するはずです。そのボックスにチェックを入れたときに生成されたSSL URLと一致するように、起動URLを変更する必要があります。非SSL URLは、フィルタを適用すると404になります。まだ問題の可能性がある起動URLとしてこれを使用している場合 –