全局添加时过滤器会中断

本文关键字:中断 过滤器 添加 全局 | 更新日期: 2023-09-27 18:01:13

我在asp.net MVC3中使用Luke Sampson的过滤器,名为[ExitHttpsIfNotRequired],它可以应用于控制器或操作,如果不应用[RequireHttps],它会自动重定向到HTTP。

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

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalFilters.Filters.Add(new ExitHttpsIfNotRequiredAttribute());
    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

它现在继续为http://pages工作,但只要我访问https://上的任何内容,就会收到错误500。我试过无数次调试,但似乎无法在本地复制这个问题——有人有什么想法吗?

提前谢谢。

全局添加时过滤器会中断

已解决!我的主ssl控制器正在调用布局中的另一个非ssl控制器(使用Html.Action(-过滤器没有为其设置的可能性:

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

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