Регистрация необработанных и сжатых HTTP-ответов в ASP.NET и IIS7
По линииэтот вопрос Я хочу создать модуль HttpModule, который будет выполнять некоторые пользовательские регистрации запросов и ответов для нас. Используя код в самом популярном ответе на этот вопрос, у меня запущен и работает HttpModule, который действительно работает:
class PortalTrafficModule : IHttpModule
{
public void Dispose()
{
// Do Nothing
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
context.EndRequest += new EventHandler(context_EndRequest);
}
private void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
// Create and attach the OutputFilterStream to the Response and store it for later retrieval.
OutputFilterStream filter = new OutputFilterStream(context.Response.Filter);
context.Response.Filter = filter;
context.Items.Add("OutputFilter", filter);
// TODO: If required the request headers and content could be recorded here
}
private void context_EndRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
OutputFilterStream filter = context.Items["OutputFilter"] as OutputFilterStream;
if (filter != null)
{
// TODO: Log here - for now just debug.
Debug.WriteLine("{0},{1},{2}",
context.Response.Status,
context.Request.Path,
filter.ReadStream().Length);
}
}
}
(note that the OutputFilterStream class referred to in the code is in the referenced вопрос).
Однако в ответах, по-видимому, отсутствуют некоторые HTTP-заголовки, которые я вижу в Fiddler (например, «Дата»), и, что более важно, когда я включаю сжатие, ответы, которые я записываю в журнал, не сжимаются, тогда как в Fiddler я вижу.
So my question - возможно ли записать сжатый контент или это происходит на следующем шаге, к которому мой модуль не может подключиться?
Для записи я также попытался обработатьPreSendRequestContent событие и ответ по-прежнему несжатый.