I would like to add some HTML to every page that our IIS 6 server serves. It's serving static HTML for the most part. Is this something IIS or an extension can do? I would need some control over how and where the HTML is injected, in this case before the tag. Thanks for your suggestions!
Natively I believe the only thing you can do is insert a document footer (on the Documents tab).
In IIS proper, you can add a footer, which is great for a copyright line, or similar. If you want more control, to truly "inject", I would create an HTTP Handler (.NET) that handles .html requests and adds what you need.
If you are "old school", use ISAPI filters instead. Too much work for my tastes.
If you're familiar with ASP.NET, you could write a HTTP Response Filter to do that.
Read this article by Milan Negovan.
The HttpResponse class has a very useful property:
public Stream Filter {get; set;}
MSDN provides a helpful description of this property: "Gets or sets a wrapping filter object used to modify the HTTP entity body before transmission." Confused? In other words, you can assign your own custom filter to each page response. HttpResponse will send all content through your filter. This filter will be invoked right before the response goes back to the user and you will have a change to transform it if need be.
This could be extremely helpful if you need to transform output from "legacy" code or substitute placeholders (header, footer, navigation, you name it) with proper code. Besides, at times it's simply impossible to ensure that every server control plays by the rules and produces what you expect it to. Enter response filters.
The Filter property is of type
System.IO.Stream
. To create your own filter you need to derive a class from System.IO.Stream (which is an abstract class) and add implementation to its numerous methods.