我正在尝试设置一个充当图像 CDN 的 MVC4 网站,但我无法让 VirtualFolder 功能在 IIS 或 IIS Express 中用于“原始”(未修改)文件。如果我将网站切换到内置网络服务器,那么我可以请求“原始”文件并加载它。在这两种情况下,如果我使用诸如 ?width=300 之类的查询字符串,图像就会正确加载。
最终,我的目标是创建我自己的插件,该插件将从我们管理动态内容的内容服务中加载文件,但我只是想让事情正常工作,而不需要最后标记的查询字符串值,因为会有很多情况下,图像需要以原始形式加载。它们的格式类似于 somewebsite.com/images/{someid}/{somefilename}.ext。
这是一个全新的网站,我使用 NuGet 中的 MVCWebConfig 包安装了 ImageResizer。现在我有指向“~/testpath”的 VirtualFolder 插件,就像我说的,~/testpath/someimage.jpg 不起作用,但 ~/testpath/someimage.jpg?width=300 起作用。
我已经完成了故障排除、Stackoverflow 和 Google 搜索,似乎一切都设置正确,所以我只是不明白为什么内置服务器可以工作,但 IIS 和 IIS Express 不能。
请注意,这是在 Windows 7 Ultimate VS2k12 上。Express 显示为 IIS8,常规 IIS 为 7.5。
此外,我已经尝试过打开和关闭 RAMMFAR (runAllManagedModulesForAllRequests)。 编辑——我误报了没有 RAMMFAR 使内置服务器无法呈现原始文件,事实并非如此。在这两种情况下,RAMMFAR 似乎都不会影响它,但使用 vpp="true" 是造成差异的原因。
编辑此外,我尝试让插件使用 vpp="false" 以及 vpp="true"。
编辑 7/11/2013这是 resizer.debug 诊断表详细信息(在 IIS Express 中运行):
图像调整器诊断表 2013 年 7 月 11 日下午 12:50:49
2 检测到的问题:
(警告):要在此处可能看到其他错误,请执行图像调整大小请求。
(警告):NoCache 仅用于开发用途,不能扩展到生产用途。添加 DiskCache 或 CloudFront 以供生产使用
您没有使用任何付费捆绑包。
注册插件:
ImageResizer.Plugins.Basic.DefaultEncoder ImageResizer.Plugins.Basic.NoCache ImageResizer.Plugins.Basic.ClientCache ImageResizer.Plugins.Basic.Diagnostic ImageResizer.Plugins.Basic.SizeLimiting ImageResizer.Plugins.MvcRoutingShim.MvcRoutingShimPlugin GAT.Web.Cdn.Plugins。 ContentImagePlugin ImageResizer.Plugins.Basic.VirtualFolder ImageResizer.Plugins.Basic.Gradient
配置:
接受的查询字符串键:
质量,格式,缩略图,颜色1,颜色2,角度,宽度,高度,最大宽度,最大高度,w,h,比例,拉伸,裁剪,cropxunits,cropyuunits,页面,bgcolor,旋转,翻转,sourceFlip,sFlip,sRotate,borderWidth, borderColor, paddingWidth, paddingColor, ignoreicc, frame, useresizingpipeline, cache, process, margin, anchor, dpi, mode, zoom,
接受的文件扩展名:
bmp, gif, exif, png, tif, tiff, tff, jpg, jpeg, jpe, jif, jfif, jfi,
环境信息:
在 Microsoft Windows NT 6.1.7601 Service Pack 1 和 CLR 4.0.30319.18052 上运行 Microsoft-IIS/8.0 信任级别:不受限制的操作系统位数:x86 !! 警告,在 64 位操作系统(AMD64)上以 32 位运行。这将限制内存的使用!执行程序集:C:\Program Files (x86)\IIS Express\iisexpress.exe IntegratedPipeline: True