asp.net mvc - Trying to implement IVirtualImageProvider in ImageResizer -


i'm trying implement ivirtualimageprovider plugin imageresizer explained here. didn't find instructions hard follow, doesn't seem of images passing through plugin. images stored in windows folder located outside of asp .net root.

any image path starts "assets" or "images" should handled plugin. here implementation of ivirtualimageprovider , ivirtualfile interfaces:

namespace imageresizer.plugins.basic {     public class resizervirtfolder : iplugin, ivirtualimageprovider     {         public iplugin install(configuration.config c)         {             c.plugins.add_plugin(this);             return this;         }          public bool uninstall(configuration.config c)         {             c.plugins.remove_plugin(this);             return true;         }          public bool fileexists(string virtualpath, system.collections.specialized.namevaluecollection querystring)         {             return (virtualpath.startswith("assets", stringcomparison.ordinalignorecase) || virtualpath.startswith("images", stringcomparison.ordinalignorecase));         }          public ivirtualfile getfile(string virtualpath, system.collections.specialized.namevaluecollection querystring)         {             return new resizervirtualfile(virtualpath);         }     }      public class resizervirtualfile : ivirtualfile     {         public resizervirtualfile(string virtualpath)         {             this._virtualpath = virtualpath;          }          protected string _virtualpath;         public string virtualpath         {             { return _virtualpath; }         }          public system.io.stream open()         {             string sitepath = system.configuration.configurationmanager.appsettings["pagefileslocation"];             _virtualpath = _virtualpath.contains("assets/") ? _virtualpath.substring(_virtualpath.indexof("assets/") + 7) : _virtualpath;             string assetpath = path.combine(sitepath, _virtualpath.trimstart('/').replace("/", @"\"));             system.io.filestream ostream = new filestream(assetpath, filemode.open);             return ostream;         }     } } 

here's brief snippet of web.config modification made plugin:

<resizer>     <plugins>       <add name="mvcroutingshim" />       <add name="resizervirtfolder" />     </plugins> </resizer> 

imageresizer.plugins.basic.resizervirtfolder shows under registered plugins when go resizer.debug.ashx, believe means plugin loaded. however, when put breakpoint on fileexists or getfile functions, isn't triggered.

i thought use virtualfolder plugin, doesn't it's included in download more. i'm using v 3.4.3.

edit: added link debug output gist here.

longer edit: should add images not showing not have query strings in requests , not being resized in way. mean imageresizer not @ them @ all, , result, virtual image provider's functions not executing in case?

another edit: looking @ this page, seems simplest way images work in imageresizer might add different prefix rather /assets or /images, perhaps /resize. in case, should add ignore route /resize or not? there route handler provided cms try deal route if not ignore it.

well, looks found own solution. here's problem:

return (virtualpath.startswith("assets", stringcomparison.ordinalignorecase)  

startswith return false because virtualpath start hostname. switching contains() statement has working perfectly.

great plugin, way!


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -