插件

2015-05-19 30 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