У меня была та же ситуация, что и у Дуга, описанного выше
Мое решение:
1) Создан пользовательский контроллер фабрики. Это необходимо для получения ControllerContext в моем пользовательском атрибуте https.
public class CustomControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
var controller = base.CreateController(requestContext, controllerName);
HttpContext.Current.Items["controllerInstance"] = controller;
return controller;
}
}
}
2) В функции Application_Start из файла Global.asax написано следующее:
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
3) Определенный пользовательский атрибут https:
public class CustomRequireHttpsAttribute : System.Web.Mvc.RequireHttpsAttribute
{
public bool RequireSecure = false;
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
{
if (RequireSecure && !((Controller)HttpContext.Current.Items["controllerInstance"]).ControllerContext.IsChildAction)
{
base.OnAuthorization(filterContext);
}
}
}
4) Использование нового атрибута для определения контроллера аккаунта:
[CustomRequireHttps]