繁体   English   中英

在不需要 ASHX 文件的情况下挂钩 HttpHandler

[英]Hooking in an HttpHandler WITHOUT needing an ASHX file

我已经在 SO 和其他论坛上查看了这个问题的答案,但还没有看到一个令人满意地解释我如何解决这个问题的人,所以请多多包涵。

我正在研究几个老式的 Asp.Net/C# 网站(4.6),并且需要验证码图像......我已经有一个可以重复使用的 HttpHandler class,它利用了另一个实际生成图像的 class本身。 但我想将处理程序代码留在它自己的程序集中,而不必为我必须发布的每个网站将其代码复制并粘贴到 ASHX 文件中。 是否有一种无需 ASHX 文件即可调用处理程序(实现 IHttpHandler 接口)的好方法?

到目前为止,这就是我试图做的事情。

web.config:

  <system.webServer>
    <handlers>
      <add name="Captcha" path="*Captcha.jpg" type="MyNamespace.CaptchaImageHandler, CaptchaImageHandler" verb="GET" />
    </handlers>

    ...

  </system.webServer>

处理程序:

namespace MyNamespace
{

    public class CaptchaImageHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
        
        public void ProcessRequest(HttpContext context)
        {        

            ...

        }
    }
}

...在我的 web 页面中,我有一个名为 CaptchaImage 的 html 图像控件,其中我以这种方式在代码隐藏中更新 Src:

  CaptchaImage.Src = "~/Images/Captcha.jpg?w=160&h=64&(additional arguments for colors, etc.)"

我已经尝试了路径的波浪号方法,并指出了图像文件夹的完整路径(这应该不重要,对吧?那里没有“真实”图像),但似乎两种方法都不起作用。 使用 URL 直接浏览图像(处理程序)会给我一个 404。

任何帮助将不胜感激。 非常感谢大家,并保持祝福!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM