全局添加时过滤中断

时间:2011-07-04 22:06:54

标签: c# asp.net-mvc-3 filter

我在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.我已经尝试了无数次调试,但我似乎无法在本地复制该问题 - 有没有人有任何想法?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

解决!我的主要ssl控制器在布局中调用另一个非ssl 控制器(使用Html.Action) - 未设置过滤器的可能性:

我通过在Luke的[ExitHttpsIfNotRequired]过滤器中添加以下内容来修复此问题:

// Abort if it's a child controller
if (filterContext.IsChildAction) return;