【发布时间】:2026-02-22 11:50:01
【问题描述】:
我正在编写一个处理程序来处理资源,当实现的 IHttpHandler 类是在命名空间下编写时,我遇到了一个问题。
请找代码
不工作场景
Web.config:
<add name="ResourceHandler" type="PublicSite.Classes.Handlers.ResourceEndpoint, PublicSite" path="Resource.ashx" verb="*" />
属性:PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=False
问题:构造函数被命中并且 ProcessRequest 未被调用。构造类的对象,即 Constructor is hit ,但是在调用 processrequest 之前失败了 404。
工作场景
Web.config:
<add name="ResourceHandler" type="ResourceEndpoint,PublicSite" path="Resource.ashx" verb="*" />
班级:PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=True
在调用 processrequest 之前构造函数被 404 命中并失败。
当我们第二次请求处理程序时,它直接使用构造的对象,因此不会调用 construcotr,而是直接调用 ProcessRequest。顺便说一句,在第二次调用中,处理程序正在工作。
我不需要可重用的属性。 有人可以帮我找到问题。谢谢。
【问题讨论】:
-
您是否在使用实际的 .ashx 文件并在 Web 配置中注册它?
-
可能是这样,即使处理程序在命名空间中,您只需要在配置行中的类名,而不需要命名空间?
-
您使用的是哪个版本的 IIS?对于 6 及以下,您需要在
下注册处理程序,但对于 7 及以上,它位于 web.config 中的 部分 -
对不起,我已经更新了问题。这不是命名空间的原因。未调用 processrequest,并且由于未知原因发出 404。
-
@sh1rts 我已经用问题详细信息更新了问题。我试过 iis 7.5 和 8.5 ,结果一样。
标签: c# asp.net .net httphandler