我可以将IIS添加(注入)HTML到它所服务的每个页面吗?

时间:2009-03-12 14:30:27

标签: iis iis-6

我想在我们的IIS 6服务器所服务的每个页面上添加一些HTML。它大部分都是静态HTML。这是IIS还是扩展可以做的事情?我需要控制注入HTML的方式和位置,在这种情况下是在标记之前。谢谢你的建议!

4 个答案:

答案 0 :(得分:2)

本地化我相信你唯一能做的就是插入一个文档页脚(在“文档”选项卡上)。

答案 1 :(得分:2)

如果您熟悉ASP.NET,可以编写 HTTP响应过滤器来执行此操作。

阅读此article by Milan Negovan

HttpResponse 类有一个非常有用的属性:

public Stream Filter {get; set;}
  

MSDN提供了有用的说明   这个属性:“获取或设置一个   包装用于修改的过滤器对象   以前的HTTP实体主体   传输。“困惑?在其他   单词,您可以指定自己的自定义   过滤到每个页面的响应。   HttpResponse将发送所有内容   通过你的过滤器。这个过滤器会   在响应之前调用   回到用户,你会   如果需要,可以改变它   是

     

如果你这可能会非常有帮助   需要转换“遗产”的输出   代码或替代占位符   (页眉,页脚,导航,你的名字   它)用适当的代码。此外,在   时间根本不可能确保   每个服务器控件都由   规则并产生你所期望的   至。输入回复过滤器。

     

Filter属性是类型   System.IO.Stream。创建自己的   过滤你需要从中派生一个类   System.IO.Stream(这是一个抽象的   class)并为其添加实现   众多方法。

答案 2 :(得分:1)

在IIS中,您可以添加页脚,这对版权行或类似内容非常有用。如果你想要更多控制,真正“注入”,我会创建一个HTTP处理程序(.NET)来处理.html请求并添加你需要的东西。

如果您是“老学校”,请改用ISAPI过滤器。我的口味太多了。

答案 3 :(得分:0)

在使用URL重写模块之前,我可以通过出站规则注入一些CSS:

<rewrite>
    <rules>
        <outboundRules rewriteBeforeCache="true">
            <rule name="Add custom CSS" preCondition="IsHTML">
                <match filterByTags="None" pattern="&lt;/head>" />
                <action type="Rewrite" value="&lt;link rel=&quot;stylesheet&quot; href=&quot;/path/to/custom/styles_override.css&quot;>&lt;/head>" />
            </rule>
            <preConditions>
                <preCondition name="IsHTML">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rules>
</rewrite>

您应该能够对html内容执行相同的操作,而不是css ...