我在ASP.NET MVC5项目中使用ImageResizer v3.4.3和S3Reader2插件(5.2.3,.net 4.5)
如果我没有提供查询字符串,一切都可以正常使用本地图像和S3托管图像。
http://localhost/local-img-folder/filename.jpg?width=100
http://localhost/s3/bucket-name/folder/filename.jpg
如果我想获取以下网址,我会收到404错误:
http://localhost/s3/bucket-name/folder/filename.jpg?width=100
这是我的缩放器Web.Config部分
<resizer>
<plugins>
<add name="MvcRoutingShim" />
<add name="S3Reader2" prefix="~/s3" region="eu-west-1" buckets="XXXXXXXXXXX" accessKeyId="XXXXXXXXXXXX" secretAccessKey="XXXXXXXXXXXXXXXXXXX" />
</plugins>
</resizer>
通过使用Fiddler,我注意到当我尝试使用查询参数拉出S3图像时,IIS甚至没有尝试联系AWS,并且可以在ELMAH日志中找到以下错误:
System.Web.HttpException (0x80004005): No image exists at C:\DEV\GitHub\<projectpath>\s3\bucket-name\folder\filename.jpg
at ImageProcessor.Web.Services.LocalFileImageService.<GetImage>d__0.MoveNext()
为什么添加查询参数会导致Resizer使用LocalFileImageService?
答案 0 :(得分:1)
ImageProcessor.Web.Services.LocalFileImageService
不是ImageResizer的一部分,它是ImageProcessor的一部分。
您安装了两个映像服务器,后者正在接管请求并导致失败。