Я использую ActionFilter (см. Ниже), чтобы определить, требуется ли 1. текущему контроллеру / действию SSL и 2. SSL в настоящее время используется, и соответственно перенаправить.
Это прекрасно работает локально (используя фиктивный сертификат в IIS 7), но как только я запускаю его на сервере, я получаю сообщение об ошибке, указывающее на бесконечный цикл перенаправления.
Есть идеи?
public class SslFilter : ActionFilterAttribute
{
public SslFilter(bool sslRequired)
{
SslRequired = sslRequired;
}
public bool SslRequired { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
var builder = new UriBuilder(req.Url);
if (SslRequired && !req.IsSecureConnection)
{
builder.Scheme = Uri.UriSchemeHttps;
builder.Port = 443;
res.Redirect(builder.Uri.ToString());
}
else if (!SslRequired && req.IsSecureConnection)
{
builder.Scheme = Uri.UriSchemeHttp;
builder.Port = 80;
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
Ошибка Firefox:
Страница не перенаправляет должным образом
Firefox обнаружил, что сервер
перенаправляет запрос на это
обращаться таким образом, чтобы никогда не
полный.
Эта проблема иногда может быть вызвана
отключив или отказавшись принять
печенье.