1

我在 ASP.NET MVC 4 项目中使用ImageResizer模块,以及插件 SqlReader 和 MvcRoutingShim。

当我尝试访问 URL ~/databaseimages/123.jpg(例如)时,我只是得到标准错误404 - The resource cannot be found.

我的期望是 ImageResizer 会处理该请求并尝试从数据库中读取图像,但它甚至不尝试连接(我使用 SQL Profiler 来验证这一点)。

有什么问题?

这是 /resizer.debug 的输出:

Image resizer diagnostic sheet      26-06-2012 20:42:57

1 Issues detected:

(Warning):  To potentially see additional errors here, perform an image resize request.



You are using paid bundles: Cloud Bundle, Performance Bundle

Registered plugins:

ImageResizer.Plugins.Basic.DefaultEncoder
ImageResizer.Plugins.Basic.NoCache
ImageResizer.Plugins.Basic.ClientCache
ImageResizer.Plugins.Basic.Diagnostic
ImageResizer.Plugins.Basic.SizeLimiting
ImageResizer.Plugins.MvcRoutingShim.MvcRoutingShimPlugin
ImageResizer.Plugins.SqlReader.SqlReaderPlugin
ImageResizer.Plugins.DiskCache.DiskCache

Configuration:

<resizer>
<plugins>
<add name="MvcRoutingShim" />
<add name="SqlReader" prefix="~/databaseimages/" connectionString="database" idType="UniqueIdentifier" blobQuery="SELECT Content FROM Images WHERE ImageID=@id" modifiedQuery="Select ModifiedDate, CreatedDate From Images WHERE ImageID=@id" existsQuery="Select COUNT(ImageID) From Images WHERE ImageID=@id" requireImageExtension="false" cacheUnmodifiedFiles="true" extensionPartOfId="false" vpp="true" untrustedData="false" />
<add name="DiskCache" />
</plugins>
</resizer>

(...)

4

1 回答 1

1

在您的 Web.config 文件中,您声明图像 ID 都是 GUID: idType="UniqueIdentifier",但在 url: 中使用了一个整数localhost:50272/databaseimages/123.jpg

<add name="SqlReader" prefix="~/databaseimages/" connectionString="database" 
 idType="UniqueIdentifier" requireImageExtension="false" 
 cacheUnmodifiedFiles="true" extensionPartOfId="false"
 vpp="true" untrustedData="false" />

如果您未在 URL 中指定 GUID,则该请求将被忽略。将 idType 更改为不同的数据类型,如 Int,或在 URL 中使用正确的数据类型。

来源:http: //imageresizing.net/plugins/sqlreader

于 2012-06-26T21:33:12.300 回答