Dear Colleagues!
During my last development found one thing and would like to ask community what do you think about it?
Had to make a module to show some text after DNN page has been loaded. First idea was to make a module with JavaScript. This module should add this text after page appears. But client asked for some additionals and it requires httpModule instead simple JavaScript.
So, httpModule is the best way to change content before client will see it. I got example from my old project. Something like that (sorry for short version, tried less lines):
public class HTMLShow : System.IO.Stream
{
System.IO.Stream _HTML;
....
public override void Flush()
{_HTML.Flush();}
....
public override void Write(byte[] buffer, int offset, int count)
{....//usually here is i modify content how i need }
}
Made modifications in the code, installed and started to test. At the first steps of test all looks good, but once i tried to test it on pages with a lot of content, i've got a problem. Usually everyone uses
public override void Write(byte[] buffer, int offset, int count)
to change the content, but it looks like on pages with a lot fo content this method calls several times!!! Not only once, but splitted on the some parts. In this case i can't analyze the whole document, because i get only parts of it.
In this case, i had to collect all data before it goes to
public override void Flush()
and only then will make a changes for it. Module is done, client is happy! Everything looks good, but there is one question in my paranoid brain: Is it ok to override Flush() instead Write()? Will not be any problems in future?
Thanks in advance!
Sergey