我有一个图像服务器,它采用
形式的网址http://www.myserver.com/photo/foo/bar/baz/~120x120/crop/abc123.jpg
并根据从URL字符串解析的参数动态生成缩略图。我们已经在两种配置中运行了这种配置 - 一种是将IIS中的404错误映射到.aspx页面,在代码隐藏中映射图像,第二种是通过实现IHttpHandler
并在其中添加一行system.web
的{{1}}部分如此:
/photo/web.config
我需要为HTTP缓存添加一些支持,但在这两种配置中, IIS正在静默剥离<httpHandlers>
<add verb="GET,HEAD" path="*" type="App_Code.ThumbnailHandler" />
</httpHandlers>
和If-Modified-Since
标题 - Fiddler显示浏览器将它们发送到服务器,但是当我的页面或处理程序访问If-None-Match
集合时,它们就消失了。
如何使用任何文件扩展名编写一段处理任意通配符URL请求的代码,但如果客户端已经有Request.Headers
,我仍然可以访问我需要能够响应的标头当前版本的资源?我接下来要尝试将其重写为MVC应用程序,但这看起来似乎有些过分。
编辑:好的,如果我点击
,那真是太疯狂了304 Not Modified
(即.ASPX文件扩展名) - 标题是INTACT!但是,如果我点击
http://www.myserver.com/photo/this/is/a/random/string/of/gibberish.aspx
他们错过了......任何想法?
答案 0 :(得分:0)
我发现的唯一解决方法是如上所述实现IHttpHandler,但是然后将你匹配的每个文件扩展名(在我们的例子中是.JPG,.PNG和.TIF)映射到%windir%\ IIS中的Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll。出于某些奇怪的原因,这意味着IIS将调用您的HTTP处理程序,而不会首先破坏标头。