我有一个mvc 4应用程序运行在iis 7.5上。该应用程序会生成一个产品目录,并为每个产品分配图像。当图像未找到显示默认图像
有时有些产品没有任何图像分配给他们,在这种情况下,我想包括一个占位符图像,而不是没有。直到运行时间和404发生时,图像才不存在。
我想在IIS中设置一个url重写规则,如果从匹配条件的图像返回404,将显示默认图像。我对此有几个问题:
是否有可能,如果有,如何? 这样做是否存在性能问题? 有没有其他办法可以达到上述目的?
我有一个mvc 4应用程序运行在iis 7.5上。该应用程序会生成一个产品目录,并为每个产品分配图像。当图像未找到显示默认图像
有时有些产品没有任何图像分配给他们,在这种情况下,我想包括一个占位符图像,而不是没有。直到运行时间和404发生时,图像才不存在。
我想在IIS中设置一个url重写规则,如果从匹配条件的图像返回404,将显示默认图像。我对此有几个问题:
是否有可能,如果有,如何? 这样做是否存在性能问题? 有没有其他办法可以达到上述目的?
好问题。我的第一个想法是找出服务器上是否存在该文件。我假设这不像图像的数据库列那么简单。
也许你有一个场景,你可以在这里看到一个文件夹,其中的图像与productId(或类似的东西)名称相同。你可以使用System.IO.FileExists()来查明文件是否在那里。这可能不是非常有效。
另一个想法可能是查看文件存在的目录并将它们放在某种字典中。您可以将其存储在应用程序缓存中。您可以在渲染图像之前查看缓存。当然,你想要一个刷新该字典的方式(即产品图像得到上传的产品)
我不知道如何重写将工作。我想你可以在你的目的上做一些小小的工作 - 以避免这样做。
<img src="(@Dictionary[key] != null ? Model.Image : Model.EmptyImage)" />
如果你真的想用IIS来处理这个问题,你可以使用自定义的404错误页面配置。
我不知道这个解决方案的性能,但我没有看到它会成为问题的原因。
Virtual Directory
(我们称之为my_images
)。http://yourwebsite.com/my_images/generic.jpg
)。在IIS管理器中选择您my_images
虚拟目录下Error Pages
编辑404自定义错误页如下:
您现在应该有你的普通图片时被触发404错误时试图访问您的虚拟目录my_images
下的资源。
限制:
自定义404错误页面不局限于图像格式,使您的虚拟目录下触发404错误任何请求都将呈现一般图像。
如果要使用localhost
测试,您需要点击Edit Feature Settings...
和值更改为Custom error pages
: