2016-12-28 59 views
2

我正在使用SSL构建和测试一个aspnet核心应用程序。在IIS Express中运行该网站可以正常运行。所以,我想我可能会看到让它在IIS 10上运行所需的内容。正如所料,存在一些问题。aspnet核心错误:授权失败的请求在过滤器'Microsoft.AspNetCore.Mvc.RequireHttpsAttribute'

首先,我需要澄清一点,我已经在IIS中成功托管了一个非SSL aspnet应用程序,因此aspnet核心应用程序所需的所有位都在那里。但在SSL应用程序的情况下,我所得到的仅仅是浏览器中的一条消息,表明发生了错误。在web服务器日志中也没有用处。

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

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

enter image description here

enter image description here

+1

如果你没有在IIS中的站点的SSL证书设置,这将是预期的。 –

+0

我有一个由应用程序池使用的自签名证书 - 无托管代码。无论如何,这个错误甚至不涉及IIS。这个错误是由使用Kestrel web服务器的核心应用程序抛出的。 – Greg

+0

我现在用[允许匿名]属性来装饰家庭控制器,但是同样的错误被抛出。 – Greg

回答

1

我被作为肖恩Wildermuth的博客(https://wildermuth.com/2016/10/26/Testing-SSL-in-ASP-NET-Core)解释生成PFX证书解决了这个问题。一旦做到这一点,修改您的Program.cs文件,如下所示:

enter image description here

一旦做到这一点,重新发布项目(命令:DOTNET发布)和PFX文件移动到发布的文件夹。

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