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