Захват и изменение CSS-файла в HTTPModule - PullRequest
0 голосов
/ 28 октября 2011

Во время HTTP-запроса я пытаюсь перехватить и изменить файл CSS, используя HTTPModule , Response.Filter и Stream .Это потому, что мне нужно динамически изменять некоторые пути к изображениям в классах CSS.

public class RequestValidationModule : IHttpModule
{
   private HttpApplication application;

   public void Init(HttpApplication app)
   {
     app.ReleaseRequestState += (new EventHandler(this.application_ReleaseRequestState));
     application = app;
   }

   public void application_ReleaseRequestState(object sender, EventArgs e)
   {
     string absolutePath = application.Request.Url.AbsolutePath;

     if (absolutePath.EndsWith(".css", StringComparison.OrdinalIgnoreCase) && absolutePath.IndexOf("/css/") > -1)
     {
        HttpResponse response = application.Response;

        if (response.ContentType.StartsWith("text/html", StringComparison.OrdinalIgnoreCase))
        {
            response.Filter = new UpdateCssFilterStream(response.Filter, response.ContentEncoding, "/images", "/sitename");
        }
     }
    }
}

Оказывается, что атрибут Filter позволяет изменять только содержимое результата HTML-страницы.Я не смог изменить другие файлы, такие как Javascript или CSS.

Кто-нибудь знает другой подход для захвата и изменения файла CSS во время HTTP-запроса?

Спасибо,

[] RPG

...