Нет способа использовать встроенный класс RequireHttpsAttribute
, но написание собственных атрибутов фильтра MVC очень просто.Нечто подобное (основанное на классе RequireHttpsAttribute) должно работать:
public class RedirectToHttpsAttribute : FilterAttribute, IAuthorizationFilter
{
protected string Host
{
get;
set;
}
public RedirectToHttpsAttribute ( string host )
{
this.Host = host;
}
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null) {
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.Request.IsSecureConnection) {
HandleHttpsRedirect(filterContext);
}
}
protected virtual void HandleHttpsRedirect(AuthorizationContext context)
{
if ( context.HttpContext.Request.HttpMethod != "GET" )
{
throw new InvalidOperationException("Can only redirect GET");
}
string url = "https://" + this.Host + context.HttpContext.Request.RawUrl;
context.Result = new RedirectResult(url);
}
}
РЕДАКТИРОВАТЬ:
Я точно не знаю, можно ли прочитать из web.config в FilterAttribute,но я не могу придумать причину, почему бы и нет.