【问题标题】:aspnet core error: Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.RequireHttpsAttribute'aspnet 核心错误:过滤器“Microsoft.AspNetCore.Mvc.RequireHttpsAttribute”处的请求授权失败
【发布时间】:2016-12-28 17:12:48
【问题描述】:

我正在使用 SSL 构建和测试一个 aspnet 核心应用程序。在 IIS Express 中运行该站点可以正常工作。所以,我想我可能会看到让它在 IIS 10 上运行所需的条件。正如预期的那样,存在一些问题。

首先,我需要澄清一下,我已在 IIS 中成功托管了一个非 SSL aspnet 应用程序,因此 aspnet 核心应用程序所需的所有位都在那里。但是对于 SSL 应用程序,我得到的只是浏览器中的一条消息,指出发生了错误。在网络服务器日志中也没有任何用处。

所以,我的第一个测试是尝试使用 dotnet xxx.dll 直接在已发布文件夹中运行应用程序。这时候我注意到了授权错误。

 services.Configure<MvcOptions>(options =>
  {
    options.Filters.Add(new RequireHttpsAttribute());
  });

【问题讨论】:

  • 如果您在 IIS 中没有为该站点设置 ssl 证书,则应该这样做。
  • 我设置了一个由应用程序池使用的自签名证书 - 无托管代码。无论如何,此时错误甚至不涉及 IIS。该错误是由使用 Kestrel 网络服务器的核心应用程序引发的。
  • 我现在已经用 [Allow Anonymous] 属性装饰了 Home Controller,但抛出了同样的错误。
  • 当它尝试在没有端口的情况下重定向到 localhost 上的 ssl 时,正在发生错误。我怀疑您的本地 ssl 证书是否绑定到本地主机,即 IIS 中的默认网站。 ssl 未附加到应用程序池,它位于 IIS 中站点的绑定中。我会先在 IIS 中使用 ssl 和静态 html 文件对其进行测试,以确保
  • 正如我之前提到的,上面的截图是我在运行 dotnet xxx.dll 命令(在部署文件夹中)时遇到的错误。我的理解是 Kestrel Web 服务器正在引发错误。此时 IIS 甚至没有运行。也许需要通知 Kestrel 证书。我认为是错误的原因。我需要了解的是如何通知 Kestrel 证书。如果该问题得到解决,我可以进入下一阶段,将 IIS 用作反向代理服务器。

标签: iis asp.net-core iis-8


【解决方案1】:

按照 Shawn Wildermuth 的博客 (https://wildermuth.com/2016/10/26/Testing-SSL-in-ASP-NET-Core) 中的说明,我通过生成 pfx 证书解决了这个问题。完成后,修改 Program.cs 文件如下:

完成后,重新发布您的项目(命令:dotnet publish)并将 pfx 文件移动到已发布的文件夹中。

现在,当您在已发布的文件夹中运行 dotnet MyFileName.dll 时,它可以访问证书并且一切正常。 (对我来说很好)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多