Я использую следующий атрибут для украшения моего BaseController
класса.
public class OutputCompressAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(encodingsAccepted))
return;
encodingsAccepted = encodingsAccepted.ToLowerInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (encodingsAccepted.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (encodingsAccepted.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
Проблема в том, что, хотя это прекрасно работает для представлений и каждого результата действия, атрибут не работает длявещи в папке /Content
проекта.Мне было интересно, как я могу сделать так, чтобы файлы в папке Content
использовали контроллер, или были каким-то образом связаны или перехвачены чем-то, что позволяет мне добавлять эти фильтры в заголовок ответа.