Ответ 1
После небольшого копания я пошел по линиям прокатки, потому что не было хорошего встроенного решения для этого (как уже упоминалось, для приложений MVC2 есть отличный вариант в виде [RequireHttps]). Вдохновленный çağdaş решением этой проблемы, и я адаптировался, чтобы придумать следующий код:
public class RequireHttp : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// If the request has arrived via HTTPS...
if (filterContext.HttpContext.Request.IsSecureConnection)
{
filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.Url.ToString().Replace("https:", "http:")); // Go on, bugger off "s"!
filterContext.Result.ExecuteResult(filterContext);
}
base.OnActionExecuting(filterContext);
}
}
Теперь я могу добавить это к моим методам контроллера, и он ведет себя (как будто), как ожидалось. Если я перенаправляю действие индекса на мой контроллер из протокола HTTPS, он перенаправляется на HTTP. Он позволяет только HTTP-доступ к индексу ActionResult.
[RequireHttp]
public ActionResult Index() {
return View();
}