【问题标题】:HttpHandler with a different extension to .ashx具有与 .ashx 不同扩展名的 HttpHandler
【发布时间】:2018-08-16 02:12:49
【问题描述】:

我的网站上有一个图像处理程序,可以在下面的 url 上运行。显然,作为一个 asp.net httphandler,它具有 .ashx 扩展名,即使它返回具有 mime 类型 image/jpeg 的内容

https://xxxxx/image.ashx?id=78164&imagelibraryid=0404fd0c-e681-4a5c-9899-f2709aaf7e0c

我们希望使用 cloudflare 来缓存和提供图像,但要使其正常工作,您必须使用带有标准扩展名的图像 URL,例如 jpg/gif/png 等。

我的 httphandler 是否可以检测和处理任何对 image.jpeg 的请求?

只有 image.jpeg 应该由 httphandler 处理,任何其他 XXX.jpeg 仍然需要从文件系统中提供。

有可能吗?

谢谢

【问题讨论】:

    标签: asp.net httphandler ashx


    【解决方案1】:

    我认为您有三个选项可以让您使用如下所示的新网址提供相同的图片:

    https://xxxxx/something-custom/images/78164/0404fd0c-e681-4a5c-9899-f2709aaf7e0c.jpg

    选项一 - 使用 IIS rewrite rules 在一个具有适当扩展名的网址上公开提供服务,并重写网络服务器内的地址,以便将片段传递到 ashx 处理程序。

    选项二——使用aspnet路由,最初是为MVC设计的,用一堆管道代码在两个范式之间传递数据,详见this SO question

    选项三 - 通过将代码从 ashx 移出到新的 api 控制器来重写代码,因为如今 ashx 处理程序有点过时,而且 mvc 和模型绑定通常更容易且更可测试。大多数核心逻辑可能可以通过lift and shift快速完成,只需使用路由和mvc将新的url片段映射到您的业务逻辑使用的变量中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 2020-06-15
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多