Я написал HttpModule, который я использую для перехвата, вызывает обработчик WebResource.axd, поэтому я могу выполнить некоторую пост-обработку на javascript.Фильтр HttpResponse ничего не возвращает
Модуль обертывает поток Response.Filter для выполнения его обработки и записывает его изменения в базовый поток.
Проблема заключается в том, что сценарий не возвращается в браузер.
Так как очень простой пример, который просто действует как проход через модуль выглядит следующим образом:
public class ResourceModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);
}
void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication context = sender as HttpApplication;
if (context.Request.Url.ToString().Contains("WebResource.axd"))
{
context.Response.Filter = new ResourceFilter(context.Response.Filter);
}
}
}
и ResourceFilter, что просто выводит то, что он получает, выглядит так:
public class ResourceFilter : MemoryStream
{
private Stream inner;
public ResourceFilter(Stream inner)
{
this.inner = inner;
}
public override void Write(byte[] buffer, int offset, int count)
{
inner.Write(buffer, offset, count);
}
}
Я могу прикрепить и посмотреть, как вызывается модуль и фильтр, но когда я просматриваю URL-адрес WebResource.axd, я ничего не получаю.
Я использовал этот шаблон для реализации модулей, которые выполняют обработку на страницах aspx, и они работают нормально. Похоже, что есть что-то о взаимодействии с WebResource.axd, которое мешает этому работать.
Если кто-то заинтересован в коде, чтобы установить флаг ложной : 'поле FieldInfo = _webStream.GetType() BaseType.GetField ("_ писатель", BindingFlags.NonPublic | BindingFlags.Instance);' ' вар автор = field.GetValue (_webStream),' ' FieldInfo ignoringWrites. = writer.GetType(). GetField ("_ ignoringFurtherWrites", BindingFlags.NonPublic | BindingFlags.Instance); ' ' ignoringWrites.SetValue (writer, false); ' – avidenic