我正在使用HttpHandler动态确定要为白标网站显示的正确徽标。当我在本地运行时,这非常有效,但是当我们将站点部署到测试环境时,对HttpHandler的调用返回404。
我有一种模糊的怀疑,即由于Web.config的某种问题而发生这种情况,例如,Web.config中处理程序的注册没有进入本地以外的任何环境,所以找不到处理程序。但是调试和发布之间没有任何转换会影响这一点,除非我需要主动做一些事情来确保处理程序在各种环境转换中注册(我目前没有这样做)。
以下是处理程序在我的Web.config中注册的方式(在<configuration><system.webServer><handlers>
下):
<add name="LogoHttpHandler" verb="*" path="imagehandler/*" type="MyWebApp.HttpHandlers.LogoHttpHandler, MyWebApp" resourceType="Unspecified"/>
我承认我并不完全清楚上面的每一部分(特别是在类型参数和resourceType参数中重复命名空间),但这是有效的代码。该文件本身位于名为Helpers的根文件夹中 - 我以为它必须驻留在App_Code中,但这导致了命名空间问题,并且最终没有它。
非常感谢任何帮助。谢谢!
编辑:在集成模式下在IIS 7中注册处理程序的说明开始:“编译HTTP处理程序类并将生成的程序集复制到应用程序根文件夹下的Bin文件夹。”或 - 将处理程序的源代码放入应用程序的App_Code文件夹中。“我没有做过这些事情(如上所述,我从App_Code中的处理程序开始,但将其移出)并且处理程序仍在我的本地环境中工作。也许那是真正的错误 - 它不应该在任何地方工作,但在本地给我一个假阳性?