aspnet核心错误:授权失败的请求在过滤器'Microsoft.AspNetCore.Mvc.RequireHttpsAttribute'
问题描述:
我正在使用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());
});
答
我被作为肖恩Wildermuth的博客(https://wildermuth.com/2016/10/26/Testing-SSL-in-ASP-NET-Core)解释生成PFX证书解决了这个问题。一旦做到这一点,修改您的Program.cs文件,如下所示:
一旦做到这一点,重新发布项目(命令:DOTNET发布)和PFX文件移动到发布的文件夹。
现在,当您在发布的文件夹中运行dotnet MyFileName.dll时,它可以访问证书并且一切正常。 (好吧,它对我来说)
如果你没有在IIS中的站点的SSL证书设置,这将是预期的。 –
我有一个由应用程序池使用的自签名证书 - 无托管代码。无论如何,这个错误甚至不涉及IIS。这个错误是由使用Kestrel web服务器的核心应用程序抛出的。 – Greg
我现在用[允许匿名]属性来装饰家庭控制器,但是同样的错误被抛出。 – Greg