【问题标题】:Trouble to set HTTPS on ASP.NET Core 2.1 + IIS在 ASP.NET Core 2.1 + IIS 上设置 HTTPS 的麻烦
【发布时间】:2019-03-15 02:37:06
【问题描述】:

我正在尝试将 https 配置到我在 Windows Server 2012 上的 IIS 上托管的网站。我的项目是 ASP.NET Core 2.1 的默认 WebApi 应用程序,我正在使用 win-acme 来配置带有 Let's Encrypt 证书的 IIS。

除了 http 流量没有被重定向到 https 之外,一切都运行良好。如果我检查日志,我会得到:

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.

我认为这可以通过将其添加到我的 ConfigureServices 方法中轻松解决:

services.AddHttpsRedirection(options =>
{
    options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
    options.HttpsPort = 443;
});

但是,现在我根本无法访问我的网站。 Chrome 给我一条消息:

此页面无法正常工作 www.example.com 将您重定向太多次

如果我检查日志,它会显示一堆这样的行:

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://example.com
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.1026ms 307
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://example.com
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.1837ms 307

有人知道我做错了什么吗?

【问题讨论】:

    标签: iis asp.net-core https asp.net-core-2.1 iis-8.5


    【解决方案1】:

    我刚刚找到了答案。这可以通过在 ConfigureServices.cs 中添加以下代码来解决:

    services.Configure<ForwardedHeadersOptions>(options =>
    {
        options.ForwardLimit = 2;
        options.KnownProxies.Add(IPAddress.Parse("127.0.10.1"));
        options.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name";
    });
    

    来源:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1#forwarded-headers-middleware-options

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2019-01-27
      • 2019-06-26
      • 1970-01-01
      相关资源
      最近更新 更多