HttpHandler与.ashx的扩展名不同

时间:2018-03-07 20:54:30

标签: asp.net httphandler ashx

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

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

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

无论如何我的httphandler可以检测并处理对image.jpeg的任何请求吗?

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

有可能吗?

由于

1 个答案:

答案 0 :(得分:0)

我认为您有三个选项可以让您使用看起来像这样的新网址投放相同的图片:

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

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

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

选项三 - 通过将其从ashx移动到新的api控制器中来重写代码,因为ashx处理程序现在有点陈旧,而mvc和模型绑定通常更容易且更易测试。大多数核心逻辑可以通过提升和移位快速完成,只需使用routing和mvc将新的url片段映射到业务逻辑所消耗的变量中。