2014-02-07 18 views
2

我正在使用处理程序来从数据库提供图像。我为处理程序配置的路径有问题。如何配置处理程序路径以从文件夹和数据库提供图像?

<add name="DbFileHandler" verb="*" path="/images/db/*" type="DbFileHandler" 
resourceType="Unspecified" allowPathInfo="true" /> 

我们要实现的流程是:

1)首先图像从一个文件夹请说 “/图片/ DB”。

2)如果该文件夹不包含图像,调用处理程序,其形式获取数据库的图像,其显示和图像写入到文件夹

同样,我们也Implemeted一个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 - 再处理程序被调用,而不是调用从文件夹中的图片

我们如何配置处理程序,以便http://www.abc.com/images/db/image.jpg的请求不是针对处理程序,而是从“/ images/db /”文件夹提供服务?

N.B:我想保持的路径相同即http://www.abc.com/images/db/

回答

0

是否使用IIS快递/满了吗?如果是这样,IIS可能会将.jpg扩展名作为静态文件并绕过您的处理程序。您需要设置:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 

这将确保IIS不会将其视为静态文件,并且您的处理程序将运行。

然后,您需要手动执行检查以查看映像是否存在并提供该磁盘映像(如果有的话),这是IIS将执行的操作,但如果找不到,IIS将返回404,而您需要进行图像处理并返回图像数据。

0

Please read the ImageResizer Best Practices

使用ImageResizer正确,你只需要使用DiskCache和SqlReader plugin(或者build your own provider)和ImageResizer将处理请求拦截和(正确线程),缓存为您服务。

除了使用HttpHandler而不是HttpModule的内在性能限制外,在加载情况下,除非您实现可协调磁盘I/O的线程系统,否则将会创建大量锁定和/或损坏的文件。

我强烈建议你重新考虑你在这里采取的方法。

相关问题