HttpHandlers I understand - I implemented one to do image download control
(intercepted requests for .JPG and return "Please do not directly access
this image").
So what you're saying is, instead of implemeting an ASPX file with the
codebehind, implement an HttpHandler. Instead of calling an IMG tag with the
ASPX page and the image I want served on the command line, call and IMG tag
with, say, the source as "dir1/dir2/imagename.xxx" where "xxx" is any
extension I want. I could then have the handler intercept that call, parse
the URI to find the image, perform its magic, and return the image.
Nice! I'd not considered this solution. Many thanks!
Christopher
"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:eC**************@tk2msftngp13.phx.gbl...
"Christopher Ambler" <ch***@ambler.net> wrote in message
news:ud**************@tk2msftngp13.phx.gbl... I'm wondering if there's a solution here -
I have an ASPX page with a sole purpose of scaling an image. The ASPX
page contains a single line with the codebehind tag, and the .cs file
contains the code to read an image, use GDI+ to scale it to a reasonable size,
and emit the image directly (setting content-type on the response and
spitting out the bytes for the image).
What I'd love to do would be to eliminate the ASPX page and be able to call a routine in my compiled code directly. Since this code will be
delivered to a customer, that would get rid of the extra ASPX page and make it much more elegant.
You are describing an HttpHandler. See "
Securely Implement Request Processing, Filtering, and Content Redirection
with HTTP Pipelines in ASP.NET"
at(http://msdn.microsoft.com/msdnmag/is...s/default.aspx ). Here's an example .ashx file from that article:
<%@ WebHandler language="C#" class="Pipeline.TimeHandler" %>
using System;
using System.Web;
namespace Pipeline
{
public class TimeHandler : IHttpHandler
{
void ProcessRequest(HttpContext ctx)
{
// set response message MIME type
ctx.Response.ContentType = "text/xml";
// write response message body
ctx.Response.Write("<now>");
ctx.Response.Write(
DateTime.Now.ToString());
ctx.Response.Write("</now>");
}
bool IsReuseable { get { return true; } }
}
}
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com