C# 全局添加过滤器时,过滤器会断开

C# 全局添加过滤器时,过滤器会断开,c#,asp.net-mvc-3,filter,C#,Asp.net Mvc 3,Filter,我在asp.net MVC3中使用了名为[ExitHttpsIfNotRequired]的方法,它可以应用于控制器或操作,如果[RequireHttps]没有应用,它会自动重定向到HTTP 当我将其应用于单个控制器时,它可以完美地工作。然而,由于我将把它应用于99%的控制器,我决定将它添加到我的全局过滤器中: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalFilte

我在asp.net MVC3中使用了名为[ExitHttpsIfNotRequired]的方法,它可以应用于控制器或操作,如果[RequireHttps]没有应用,它会自动重定向到HTTP

当我将其应用于单个控制器时,它可以完美地工作。然而,由于我将把它应用于99%的控制器,我决定将它添加到我的全局过滤器中:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    GlobalFilters.Filters.Add(new ExitHttpsIfNotRequiredAttribute());

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}
它现在仍然适用于http://pages,但只要我访问https://pages上的任何内容,就会得到一个错误500。我尝试过无数次调试,但我似乎无法在本地复制该问题-有人有任何想法吗


提前谢谢。

解决了!我的主ssl控制器正在调用布局中的另一个非ssl控制器(使用Html.Action)-未为其设置筛选器的可能性:

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

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