http/httpsリダイレクトに関するAzure Webアプリケーションでさえ、IISと連携しているのはissueだと思います。
だから、これをacheiveするための1つの方法は、このようなweb.config
を経由して、それを強制することです:あなたは内部api
のキーワードを除いて、すべてのurl
ためhttps
を施行している。この慣例により
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="^((?!api).)*$" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT_SECURE}" pattern="^0$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
。
public class CustomRedirect : Microsoft.AspNetCore.Rewrite.IRule
{
public void ApplyRule(RewriteContext context)
{
var request = context.HttpContext.Request;
var host = request.Host;
// Exclude localhost
if (string.Equals(host.Host, "localhost", StringComparison.OrdinalIgnoreCase))
{
context.Result = RuleResult.ContinueRules;
return;
}
// Exclude api
if (request.Path.Value.Contains("/api/"))
{
context.Result = RuleResult.ContinueRules;
return;
}
// force other traffic to https
if (string.Equals(request.Scheme, "http", StringComparison.OrdinalIgnoreCase))
{
string path = "https://" + host.Value + request.PathBase + request.Path + request.QueryString;
context.HttpContext.Response.Redirect(path,true);
context.Result = RuleResult.EndResponse;
}
}
}
そしてstartup.csの設定]セクションに登録:
ありがとうございました。私はすでに、IISサーバーとその作業(展開中に置き換えられない限り)で直接行っています。そこで私はプロジェクトに移そうとしました。また、開発中にIIS Expressに追いつくために努力しました。しかし、ファイル自体に記述されているように、 'web.config'は 'appsettings.json'に取って代わられています。私は、生産環境と開発環境の両方に適合する画期的な方法を見つけることができません。 'startup.cs'ではなく – Andre