Using Embedded Images in ASP.Net V2
Thanks to Yves and Peter for the advise I utilized your advise to create a new version my
embedded Image example. I did switch to an ashx file, I didn't even know about this file type until now. I'm no longer passing in the assembly as a parameter but I didn't want to put the assembly in the config file either, so I figured that I would just test for the image by the passed in name in all the assemblies loaded into that AppDomain. There shouldn't be to many right? But you do have to make sure that embedded image has a unique name, that shouldn't be to hard though because you can prefix it by your namespace.
<% @ webhandler language="C#" class="ImageHandler" %>
public class ImageHandler : System.Web.IHttpHandler
{
public void ProcessRequest(System.Web.HttpContext context)
{
string image = string.Empty;
System.IO.Stream stream = null;
try
{
context.Response.Clear();
image = context.Request["img"].Replace("/", ".");
foreach(System.Reflection.Assembly asm in System.AppDomain.CurrentDomain.GetAssemblies())
{
stream = asm.GetManifestResourceStream(image);
if(stream != null)
break;
}
if(stream == null)
throw new System.Exception("Image not found in loaded assemblies");
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
}
catch(System.Exception ex)
{
context.Response.Write("Exception: <BR>image = " + image + "<BR>" +
ex.Message + "<BR>" + ex.StackTrace.Replace("\n", "<BR>"));
}
finally
{
context.Response.End();
};
}
public bool IsReusable
{
get { return true; }
}
}
So what do you guys think about revision 2?