我正在使用处理程序来提供来自数据库的图像。我遇到了为处理程序配置的路径问题。
<add name="DbFileHandler" verb="*" path="/images/db/*" type="DbFileHandler"
resourceType="Unspecified" allowPathInfo="true" />
我们想要实现的流程是:
1)从文件夹中请求第一张图像说“/ images / db”。
2)如果文件夹不包含图像,则调用处理程序,从Db中获取图像,显示它并将图像写入文件夹
我们还实施了Imageresizer库来获取图像。
这里的问题是我们要求:
http://www.abc.com/images/db/101 - 称为处理程序
http://www.abc.com/images/db/image.jpg?width=200 - 调用来自文件夹的图像 http://www.abc.com/images/db/image.jpg - 再次调用Handler而不是调用文件夹中的图像
我们如何配置处理程序,以便对http://www.abc.com/images/db/image.jpg的请求不会定向到处理程序,而是从“/ images / db /”文件夹提供?
N.B:我想保持路径相同,即http://www.abc.com/images/db/
答案 0 :(得分:0)
您使用的是IIS express / full吗?如果是这样,IIS可能会将.jpg
扩展名作为静态文件处理并绕过您的处理程序。你需要设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
这将确保IIS不会将其视为静态文件,并且您的处理程序将运行。
然后,您需要手动进行检查以查看图像是否存在并提供该磁盘映像(如果是这样),IIS将执行此操作,但如果不是IIS,IIS将返回404
发现你需要进行图像处理并返回图像数据。
答案 1 :(得分:0)
<强> Please read the ImageResizer Best Practices 强>
正确使用ImageResizer,您只需要使用DiskCache和SqlReader plugin(或build your own provider),ImageResizer将为您处理请求拦截和(正确线程化)缓存。
除了使用HttpHandler而不是HttpModule的固有性能限制之外,在加载时您将创建大量锁定和/或损坏的文件,除非您实现了可以协调磁盘I / O的线程系统。
我强烈建议你重新考虑你在这里采取的方法。