в моей старой версии ASP.NET MVC 5 У меня есть настраиваемый фильтр, который управляет соединениями HTTP. Мой фильтр заставляет обеспеченных (HTTPS) запрос на повторную отправку через HTTPТребовать HTTP (не HTTP) в ASP.NET 5 (Core) Middleware
Это мой фильтр:
/// <summary>
/// Forces a secured (HTTPS) request to be resent over HTTP
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireHttpAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext.Request.IsLocal)
{
return;
}
if (string.Equals(filterContext.HttpContext.Request.Headers["X-Forwarded-Proto"],
"https",
StringComparison.InvariantCultureIgnoreCase))
{
HandleHttpsRequest(filterContext);
}
return;
}
protected virtual void HandleHttpsRequest(AuthorizationContext filterContext)
{
if (!string.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
// Only redirect GET requests
return;
}
string url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
Как я могу сделать это в ASP.NET 5?
Спасибо.
Спасибо @blowdart Я сделаю, как вы говорите;) Я не знаю, почему люди голосуют по этому вопросу ... – chemitaxis