当用户浏览到不需要的页面(并且他们没有登录)时,我正试图让我的MVC3网站从HTTPS重定向回HTTP。我不想有运行整个网站HTTPS的负载,但看起来这是我必须走的路。
我在远程调试和符号方面遇到了很多麻烦,但回到1985年,并使用等效的消息框进行调试,我得出了以下结论:
if (filterContext.ActionDescriptor
.GetCustomAttributes(typeof(RequireHttpsAttribute), true)
.Any()
)
{
return true;
}
return false;
总是返回false。
控制器def启动为:
[FilterIP(
ConfigurationKeyAllowedSingleIPs = "AllowedAdminSingleIPs",
ConfigurationKeyAllowedMaskedIPs = "AllowedAdminMaskedIPs",
ConfigurationKeyDeniedSingleIPs = "DeniedAdminSingleIPs",
ConfigurationKeyDeniedMaskedIPs = "DeniedAdminMaskedIPs"
)]
[RequireHttps]
public class AccountController : Controller
{
它似乎不适用于该控制器中的任何操作(尽管它们确实成功地路由到SSL)。
有什么建议吗?我很想看到一个答案,我认为这是我自己的秘密;)
自定义NotRequireHttpsAttribute教程
我使用上面的链接帖子来实现我的自定义属性,并从https重定向到http。希望这能有所帮助。
我的问题被发现与发布到的服务器上的绑定有关。我们在后台和生产中使用相同的服务器,并且后台https绑定没有设置,所以每当它调用https页面时,它都会解析到我们的生产站点(看起来是一样的,所以很难发现)。
一旦我添加了绑定,它就全部解决了。我的代码还可以…