[Mono-list] HttpHandler for *.jpg
Marc DM
m at phronein.com
Mon Jun 20 11:25:06 EDT 2005
After a little bit of debugging,
I have discovered that when there are QueryString parameters, passed
such as /images/pic1.jpg?thumb=1 the ProcessRequest method of the
Handler doesn't get called.
I added a line to the ProcessRequest medhod to write a log to a text
file for each iteration of the method. I also added log statements to
various places in the code.
After browsing a couple of pages, I realize that every entry in the log
is an entry for which there is no querystring.
Below is the code I put in the handler :
> public class ImageHandler:IHttpHandler
> {
>
> HttpResponse Response;
> HttpRequest Request;
> HttpServerUtility Server;
>
> #region IHttpHandler Members
>
> public void ProcessRequest(HttpContext context)
> {
>
> //Set global context objects
> Server = context.Server;
> Response = context.Response;
> Request = context.Request;
>
> //Do the image stuff
>
> ///DEBUG
> Log("Beginning image output [QS=" + Request.QueryString.Count.ToString() + "] = " + Request.RawUrl);
> ///DEBUG
>
> RequestImage();
>
> }
> public bool IsReusable
> {
> get{ return true;
> }
>
> [... rest of the handler code ...]
>
And the Logger.
> //debugging logger
> public static void Log (String logMessage)
> {
>
> StreamWriter w = File.AppendText("/home/gary/www/mysite/www/images/hih_cache/hih_log.txt");
> w.Write("\r\nLog Entry : ");
> w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
> DateTime.Now.ToLongDateString());
> w.WriteLine(" :{0}", logMessage);
> w.WriteLine ("-------------------------------");
> // Update the underlying file.
> w.Flush();
> w.Close();
> }
Records in the log file were like :
> Log Entry : 10:02:52 AM Monday, June 20, 2005
> :Beginning image output [QS=0] = /images/banner_c1.jpg
> -------------------------------
Anyone else having this kinda fun?
Marc DM
---------------
On Mon, 2005-06-20 at 08:58 +0100, Martin Hinks wrote:
> What part of the app is failing?
>
> Is the handler for .jpg types being called but the querystring is blank?
>
> Have you traced through the application? If you can find exactly what
> is failing we can file BugZilla reports.
>
> If the handler is working post some source and I'll take a look later.
>
> To find out what's going on add "response.writeline" statements at
> various points in your code - or try Mono Debugger - although I dont
> know how advanced it is...
>
> Martin
>
> On 6/20/05, Marc DM <m at phronein.com> wrote:
> > (*falling asleep as I type this*)
> >
> > I have a HttpHandler that works on .NET but not on Mono. I need some
> > help to sort it out.
> >
> > It is a HttpHandler to allow me to use a url like :
> >
> > http://mysite/images/Beach12/DCS001.JPG?w=200
> > to give me the image at the specified url, but proportionately
> > resized to 200px wide.
> >
> > http://mysite/images/Beach12/DCS001.JPG?thumb=1
> > to give me the image at the specified url, resized to a pre-defined
> > thumbnail size
> >
> > etc...
> >
> > I have the HttpHandler, written in c#, it compiles on mono (had to
> > change Response.TransmitFile to Response.WriteFile); no errors.
> >
> > It compiles on Windows. No Problem.
> >
> > using Microsoft .NET Framework 1.1 when I access
> > http://mysite/images/Beach12/DCS001.JPG?thumb=1 from my browser, a
> > thumbnailed version of the photo is created in the cache directory (if
> > it doesn't already exist, within the site), and then returned to the
> > browser. It works.
> >
> > on Apache/2.0.54 (Debian GNU/Linux) mod_mono/1.0.9
> > Everything else in the application works beautifully. But a call to
> > http://mysite/images/Beach12/DCS001.JPG?thumb=1 returns the full size
> > image and the QueryString is seemingly ignored.
> >
> > My Apache config, mono webapp file,web.config are attached below.
> >
> > Can someone clue me in? How can I tell what's happening here.
> > Thanks.
> >
> > Marc DM
> > -----------------APACHE CONFIG---------------------
> > ---------------------/etc/apache2/sites-available/mysite----------
> > NameVirtualHost *:80
> > <VirtualHost *:80>
> > ServerName mysite
> > ServerAdmin webmaster at mysite
> >
> > DocumentRoot /home/gary/www/mysite/www/
> > AddHandler mono .aspx .ascx .jpg
> >
> > DirectoryIndex default.aspx index.aspx default.html index.html
> >
> > <Directory /home/gary/www/mysite/www/>
> > Options FollowSymLinks MultiViews
> > Order allow,deny
> > allow from all
> > </Directory>
> > </VirtualHost>
> >
> > ---------------------/etc/apache2/ mods-available/mono.conf----------
> > MonoUnixSocket /tmp/mod_mono_server
> > MonoRunXSP true
> > MonoApplicationsConfigDir /etc/apache2/mod-mono-applications
> > MonoDebug true
> >
> > -----------------web.config---------------------
> > <system.web>
> > ...
> > ...
> > <httpHandlers>
> > <add verb="*" path="*.jpg"
> > type="Mynamespace.HttpHandlers.ImageHandler,HolmokImageHandler />
> > </httpHandlers>
> >
> > ---------------------------------------------------------------
> >
> > _______________________________________________
> > Mono-list maillist - Mono-list at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-list
> >
>
>
More information about the Mono-list
mailing list