HTTP 处理程序和 IIS7 的问题

Posted

技术标签:

【中文标题】HTTP 处理程序和 IIS7 的问题【英文标题】:Issue with HTTP Handlers and IIS7 【发布时间】:2011-01-15 05:20:29 【问题描述】:

我一直在开发自定义 HTTP 处理程序。使用 ASP.NET 4.0 和 IIS7 的新 web.config <httphandlers> 部分,这在我的开发机器上非常有效。

但是,当我将代码上传到我的共享主机帐户时,我收到了 500 服务器错误。我打电话给我的托管公司,他们说服务器报告了关于检测到不适用于集成管道模式的 web.config 设置的错误。

当他将 IIS 从集成模式切换到经典模式时,主页加载正常,但我的路由页面都报告 403 服务器错误。

我很确定我需要集成模式才能使<httphandlers> 部分工作,但我绝对不是 IIS/管理员。有谁知道问题可能是什么或我接下来可以尝试什么?

编辑:我更新的大部分 web.config:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>
        [...]
    </connectionStrings>
    <appSettings>
        [...]
    </appSettings>
    <system.web>
        <httpHandlers>
            <add verb="*" path="*.zip" type="BlackBelt.ZipHttpHandler"/>
        </httpHandlers>
        <compilation debug="false" targetFramework="4.0"/>
    </system.web>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <handlers>
            <add verb="*" path="BlackBelt.ZipHttpHandler" name="BlackBelt.ZipHttpHandler" type="BlackBelt.ZipHttpHandler"/>
        </handlers>
        <!-- Redirect domain.com to www.domain.com -->
        <rewrite>
            <rules>
                <clear/>
                <rule name="WWW Rewrite" enabled="true">
                    <match url="(.*)"/>
                    <conditions>
                        <add input="HTTP_HOST" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$"/>
                    </conditions>
                    <action type="Redirect" url="http://www.HTTP_HOST/R:0" appendQueryString="true" redirectType="Permanent"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

【问题讨论】:

IIS7 集成模式下的处理程序位于 下,而不是 不,没有任何更具体的错误消息,几乎不可能说出问题所在。 @Pauli:谢谢——我在阅读forums.asp.net/p/1500622/3548870.aspx 后进行了一些编辑,这表明我需要这两个部分,但我得到了相同的结果。我已经发布了我的大部分 web.config 文件。 奇怪的是,我注释掉了 system.web/httphandlers 部分。而且我看到一些 ZIP 文件通过处理程序,而另一些则没有。 其实可能是缓存的一些问题。它可能实际上正在工作。谢谢你的提示。不过,我愿意接受有关我的 web.config 文件的建议。 【参考方案1】:

多亏了泡利,我才能够弄清楚这一点。虽然 &lt;system.web&gt;&lt;httpHandlers&gt; 是我必须更改的部分,以便在从 Visual Studio 运行时使其工作,但 &lt;system.webServer&gt;&lt;handlers&gt; 是我必须修改的部分,以便在运行 IIS7 的服务器上运行时使其工作。

我收到了电子邮件,询问我是如何解决这个问题的。我写了一篇文章,描述了确切的步骤并展示了我的代码。如果有人想看这篇文章,可以通过http://www.blackbeltcoder.com/Articles/asp/writing-a-custom-http-handler-in-asp-net 获得。

【讨论】:

以上是关于HTTP 处理程序和 IIS7 的问题的主要内容,如果未能解决你的问题,请参考以下文章

IIS7出现“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。”错误-Windows-

IIS7 下报“HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。”

Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2

IIS7应用程序池集成和经典的区别

自定义异步 HTTP 处理程序仅在 IIS 7.5 集成模式下生成错误 500 - 为啥?

IIS7.5应用程序池集成模式和经典模式的区别