// Copyright 2005, 2006 - Morten Nielsen (www.iter.dk) // // This file is part of SharpMap. // SharpMap is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // SharpMap is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // You should have received a copy of the GNU Lesser General Public License // along with SharpMap; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Web; using System.Web.Caching; namespace SharpMap.Web { /// /// Class for storing rendered images in the httpcache /// public class Caching { /// /// Inserts an image into the HttpCache and returns the cache identifier. /// /// /// Image can after insertion into the cache be requested by calling getmap.aspx?ID=[identifier]
/// This requires you to add the following to web.config: /// /// /// /// /// /// /// Inserting the map into the cache and setting the ImageUrl: /// /// string imgID = SharpMap.Web.Caching.CacheMap(5, myMap.GetMap(), Session.SessionID, Context); /// imgMap.ImageUrl = "getmap.aspx?ID=" + HttpUtility.UrlEncode(imgID); /// /// ///
/// Number of minutes to cache the map /// Map reference /// Image identifier public static string InsertIntoCache(int minutes, Image map) { string guid = Guid.NewGuid().ToString().Replace("-", ""); MemoryStream MS = new MemoryStream(); map.Save(MS, ImageFormat.Png); byte[] buffer = MS.ToArray(); HttpContext.Current.Cache.Insert(guid, buffer, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(minutes)); map.Dispose(); return guid; } } }