J'utilise un ActionFilter (voir ci-dessous) pour détecter si 1. le contrôleur/l'action en cours requiert SSL et 2. SSL est actuellement utilisé, et redirige en conséquence.Rediriger la boucle avec le filtre d'action SSL dans ASP.NET MVC
Cela fonctionne très bien localement (en utilisant un cert factice dans IIS 7) mais une fois que je l'ai récupéré sur le serveur, j'obtiens une erreur indiquant une boucle de redirection infinie.
Des idées?
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);
}
}
erreur Firefox:
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
This problem can sometimes be caused by disabling or refusing to accept cookies.
Nous avons essayé cette approche et l'approche originale d'Alex H. Dans les deux cas, ils ont travaillé dans nos environnements de développement, mais pas dans la production. Cependant, l'approche acceptée dans cette question a fonctionné - http://stackoverflow.com/questions/2302081/how-do-i-set-the-protocoll-when-using-redirecttoaction –