使用SSL在IIS上托管ASP.NET CORE

时间:2017-03-27 22:26:17

标签: iis asp.net-core

我在IIS上托管了一个带有SSL证书的应用程序。 使用标准ASP,我可以在web.config中配置重写,以自动重定向到SSL版本。

但我怎么能在核心中做到这一点? 我希望当有人通过HTTP打开链接时,他们会自动重定向到HTTPS。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您仍然可以(并且应该)使用web.config

一旦IIS处理SSL - 您的应用程序(Kestrel)就会收到" clean" HTTP,因此在代码中检查SSL连接已经太晚了。您需要将IIS配置为从http重定向到https

我使用此web.config(适用于Azure):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    <rewrite>
      <rules>
        <clear />
        <rule name="Redirect to https" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

答案 1 :(得分:0)

在Asp.Net 2.1及更高版本中,只需在您的startup.cs中将以下内容添加到应用程序的Configure方法中即可:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // other app configure code here

    app.UseHttpsRedirection();

}