imageresizer sqlreader 不再支持存储过程?
imageresizer sqlreader no longer supports stored procedures?
几年来我一直在使用 imageresizer 和 sqlreader 插件,没有出现任何问题。我刚刚从 3.4.3 版升级到 4.0.4 版,现在 sqlreader 插件似乎不起作用。我这里有一个要点:
https://gist.github.com/vishnu4/a859c2599f46998b612a
我能看到的主要内容是我为我的 SQL 调用使用了存储过程,您过去使用 'queriesAreStoredProcedures' 参数来支持它。查看 http://imageresizing.net/docs/v4/plugins/sqlreader 上的文档,该参数似乎不再存在。是否有其他方法支持此功能,或者它是否消失了?
编辑:我在浏览器控制台中得到的错误是:
[SqlNullValueException: Data is Null. This method or property cannot be called on Null values.]
System.Data.SqlTypes.SqlBytes.get_Length() +2960929
ImageResizer.ImageBuilder.GetStreamFromSource(Object source, ResizeSettings settings, Boolean& disposeStream, String& path, Boolean& restoreStreamPosition) +1156
ImageResizer.ImageBuilder.LoadImage(Object source, ResizeSettings settings, Boolean restoreStreamPos) +555
ImageResizer.ImageBuilder.BuildJob(ImageJob job) +243
ImageResizer.ImageBuilder.Build(ImageJob job) +317
ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource, Boolean addFileExtension) +177
ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource) +36
ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings) +25
ImageResizer.<>c__DisplayClass5_0.<HandleRequest>b__1(Stream stream) +171
ImageResizer.Plugins.DiskCache.<>c__DisplayClass29_0.<TryWriteFile>b__0() +496
ImageResizer.Plugins.DiskCache.LockProvider.TryExecute(String key, Int32 timeoutMs, LockCallback success) +409
ImageResizer.Plugins.DiskCache.CustomDiskCache.GetCachedFile(String keyBasis, String extension, ResizeImageDelegate writeCallback, Int32 timeoutMs, Boolean asynchronous) +545
ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e) +125
ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext context, IResponseArgs e) +60
ImageResizer.InterceptModule.CheckRequest_PostAuthorizeRequest(Object sender, EventArgs e) +449
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +142
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92
queriesAreStoredProcedures
配置参数在 V4 中得到完全支持,尽管文档没有提到它。
请更具体地说明什么不起作用,以及您收到的具体错误消息和堆栈跟踪。
更新
查看错误消息,您正在查询的行似乎返回了空值。考虑到the docs for SqlBytes.Length indicate it should return -1 instead,抛出异常很奇怪。
我建议使用 Sql Server Profiler 或 IntelliTrace 查看您的配置生成的确切 SQL 命令,并验证第一个结果的第一列实际上是否包含图像字节。
几年来我一直在使用 imageresizer 和 sqlreader 插件,没有出现任何问题。我刚刚从 3.4.3 版升级到 4.0.4 版,现在 sqlreader 插件似乎不起作用。我这里有一个要点: https://gist.github.com/vishnu4/a859c2599f46998b612a 我能看到的主要内容是我为我的 SQL 调用使用了存储过程,您过去使用 'queriesAreStoredProcedures' 参数来支持它。查看 http://imageresizing.net/docs/v4/plugins/sqlreader 上的文档,该参数似乎不再存在。是否有其他方法支持此功能,或者它是否消失了?
编辑:我在浏览器控制台中得到的错误是:
[SqlNullValueException: Data is Null. This method or property cannot be called on Null values.] System.Data.SqlTypes.SqlBytes.get_Length() +2960929 ImageResizer.ImageBuilder.GetStreamFromSource(Object source, ResizeSettings settings, Boolean& disposeStream, String& path, Boolean& restoreStreamPosition) +1156 ImageResizer.ImageBuilder.LoadImage(Object source, ResizeSettings settings, Boolean restoreStreamPos) +555 ImageResizer.ImageBuilder.BuildJob(ImageJob job) +243 ImageResizer.ImageBuilder.Build(ImageJob job) +317 ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource, Boolean addFileExtension) +177 ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource) +36 ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings) +25 ImageResizer.<>c__DisplayClass5_0.<HandleRequest>b__1(Stream stream) +171 ImageResizer.Plugins.DiskCache.<>c__DisplayClass29_0.<TryWriteFile>b__0() +496 ImageResizer.Plugins.DiskCache.LockProvider.TryExecute(String key, Int32 timeoutMs, LockCallback success) +409 ImageResizer.Plugins.DiskCache.CustomDiskCache.GetCachedFile(String keyBasis, String extension, ResizeImageDelegate writeCallback, Int32 timeoutMs, Boolean asynchronous) +545 ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e) +125 ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext context, IResponseArgs e) +60 ImageResizer.InterceptModule.CheckRequest_PostAuthorizeRequest(Object sender, EventArgs e) +449 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +142 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92
queriesAreStoredProcedures
配置参数在 V4 中得到完全支持,尽管文档没有提到它。
请更具体地说明什么不起作用,以及您收到的具体错误消息和堆栈跟踪。
更新
查看错误消息,您正在查询的行似乎返回了空值。考虑到the docs for SqlBytes.Length indicate it should return -1 instead,抛出异常很奇怪。
我建议使用 Sql Server Profiler 或 IntelliTrace 查看您的配置生成的确切 SQL 命令,并验证第一个结果的第一列实际上是否包含图像字节。