HTTP处理程序和IIS7的问题

时间:2011-01-15 05:20:30

标签: asp.net iis-7 httphandler

我一直在开发自定义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>

1 个答案:

答案 0 :(得分:6)

感谢Pauli,我能够解决这个问题。虽然<system.web><httpHandlers>是我必须更改的部分,以便在从Visual Studio运行时使其工作,<system.webServer><handlers>是我必须修改的部分,以便在运行IIS7的服务器上运行时使其工作。

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