我在asp.net MVC3中使用Luke Sampson's filter调用[ExitHttpsIfNotRequired],它可以应用于控制器或操作,如果还没有应用[RequireHttps],则自动重定向到HTTP。
当我将它应用于单个控制器时,这非常有效。但是,由于我将此应用于99%的控制器,因此我决定将其添加到我的全局过滤器中:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalFilters.Filters.Add(new ExitHttpsIfNotRequiredAttribute());
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
它现在继续适用于http://页面,但是当我访问https://上的任何内容时,我收到错误500.我已经尝试了无数次调试,但我似乎无法在本地复制该问题 - 有没有人有任何想法?
提前谢谢。
答案 0 :(得分:0)
解决!我的主要ssl控制器在布局中调用另一个非ssl 控制器(使用Html.Action) - 未设置过滤器的可能性:
我通过在Luke的[ExitHttpsIfNotRequired]过滤器中添加以下内容来修复此问题:
// Abort if it's a child controller
if (filterContext.IsChildAction) return;