插件

2015-05-19 33 views
0

我对提供图片trought LDAP自定义插件IPluginIVirtualImageProvider插件

public bool IsPathVirtual(string virtualPath) 
    { 
     return virtualPath.StartsWith(VirtualFilesystemPrefix, StringComparison.OrdinalIgnoreCase); 
    } 


public bool FileExists(string virtualPath, System.Collections.Specialized.NameValueCollection queryString) 
    {    
     String username = Path.GetFileNameWithoutExtension(virtualPath); 
     return IsPathVirtual(virtualPath) && HasPhoto(username); 
    } 

如果我打我的服务器使用以下URL

http://localhost:7805/ad/username.png?w=100 - > 200图像从LDAP

服务

一切工作正常 没有查询字符串的howerver插件不被调用 http://localhost:7805/ad/username.png - > 404代码不会被调用

这是imageresizer被suposed的工作方式?

回答

0

是 - 至少在V3。

在ImageResizer V4,可以实现IVirtualImageProviderVpp,使这些文件ImageResizer以外访问(即,没有查询字符串)。

您交替具有ImageResizer.Storage.BlobProviderBase和压倒一切的2种抽象方法继承的选项;这条路线提供了最大数量的功能,以最小的努力。

+0

我已经V4安装并写了一个从BlobProviderBase派生的自定义插件,但由于某种原因,重写OpenAsync方法是*不*被称为提供无查询字符串的图片网址时。 – Iian

+0

如果没有查询字符串,您将依赖于特定的ASP.NET和IIS配置将请求传递给某种类型的StaticFileHandler,然后这些查询将与VirtualPathProvider系统进行检查。 –

+0

我有点困惑 - 上面的回答似乎意味着通过实现IVirtualImageProviderVpp可以在v4中实现。我注意到,当没有查询字符串时,调用插件事件处理程序,但除非存在查询字符串,否则执行不会到达OpenStream。现在,我在事件处理程序中为QueryString集合添加了一个“虚拟”值(maxwidth),但不必那么做...... – Iian