【问题标题】:Why my HttpHandler is ignored?为什么我的 HttpHandler 被忽略了?
【发布时间】:2010-06-28 13:50:17
【问题描述】:

在 ASP.NET 应用程序中,我需要对发送的每个 CSS 文件进行一些更改。

所以我创建了一个 HttpHandler(在应用程序本身内部),添加:

<add verb="*" path="*.css" type="MyWebsite.CssTestHandler,MyWebsite"/>

system.web/httpHandlers 中的 Web.config 并像这样修改处理程序:

public void ProcessRequest(HttpContext context)
{
    context.Response.Clear();
    context.Response.Write("Hello World");
    context.Response.End();
}

但是 CSS 文件仍然和以前一样,所以处理程序被忽略了。

我做错了什么?

【问题讨论】:

  • 你运行的是什么版本的 IIS?
  • 您的应用运行在什么版本的 IIS 和什么模式(经典、集成...仅适用于 IIS 7)?
  • 抱歉,忘记了这个。我正在通过本地 IIS 7.5 Web 服务器(不是 Visual Studio 开发服务器)使用 Visual Studio 调试应用程序。
  • 检查我答案中的链接。最新部分介绍了在集成模式下运行 IIS 7.x 的应用程序。

标签: asp.net iis httphandler web-config ihttphandler


【解决方案1】:

您需要在 IIS 中设置通配符映射,请参见以下链接:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5c5ae5e0-f4f9-44b0-a743-f4c3a5ff68ec.mspx?mfr=true

这将导致对 CSS 文件的请求由 ASP.NET 而不仅仅是 IIS 提供服务。

如果应用程序服务的流量非常大,请考虑仅为 .css 文件设置此映射,或者甚至更好地更改页面中的 CSS 数据而不是更改文件。

【讨论】:

    【解决方案2】:

    查看此页面以获取有关 IIS 版本的所有 3 种情况(6、7 经典管道和 7 集成管道)的说明: http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/

    据此,如果是集成管道,则需要添加以下配置参数:

    runAllManagedModulesForAllRequests="True"
    

    【讨论】:

      【解决方案3】:

      应用程序会忽略您的 CSS 文件,因为 IIS 会忽略 CSS 文件。

      它没有映射到 IIS 中的可执行文件。 alt text http://www.fastpics.net/sharepics/imih41904722.jpg

      尝试添加 .css 扩展名并将其映射到 .NET dll。

      【讨论】:

        猜你喜欢
        • 2013-09-30
        • 2016-06-20
        • 2018-03-12
        • 1970-01-01
        • 2022-12-23
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        相关资源
        最近更新 更多