Schlankes ASPX: ASHX!


Aspx Seiten sind unschlagbar beim Entwerfen von Web Formularen. Möchte man aber z. B. nur ein dynamisches Image erzeugen oder eine Datei zum Download anbieten, benötigt man aber den "Overhead" den die Web Formulare mitbringen (Page Events, Server Side Tags, etc. ) nicht.
Hierfür gibt es Generic Handlers.
Diese haben die Dateiendung ASHX:

Dieses Beispiel schreibt einen vertikal verlaufenden Text als jpeg, was beispielsweise für Tabellenüberschriften verwendet werden könnte.


1 <%@ WebHandler Language="C#" Class="SampleHandler" %>
2 using System;
3 using System.Web;
4 using System.Drawing;
5 using System.Drawing.Imaging;
6 using System.Drawing.Drawing2D;
7
8 public class Handler : IHttpHandler
9 {
10
11 public void ProcessRequest(HttpContext context)
12 {
13
14 string text = context.Request.QueryString["text"];
15
16 System.IO.MemoryStream memStream = new System.IO.MemoryStream();
17 Bitmap bitmap = new Bitmap(100, 20, PixelFormat.Format32bppRgb);
18
19 Graphics graphic = Graphics.FromImage(bitmap);
20
21 graphic.SmoothingMode = SmoothingMode.HighSpeed;
22 graphic.Clear(Color.White);
23 graphic.DrawString(text, new Font("Arial", 12), Brushes.Black, 0, 0);
24
25 bitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
26 bitmap.Save(memStream, ImageFormat.Jpeg);
27
28 context.Response.ContentType = "image/jpeg";
29 context.Response.BinaryWrite(memStream.ToArray());
30 context.Response.End();
31
32 }
33
34 public bool IsReusable
35 {
36 get
37 {
38 return false;
39 }
40 }
41}


Das Resultat des Beispiels ist ein Image. Und all das ohne die Page Events und den Page LifeCycle von ASPX.


0 Kommentare:

Kommentar veröffentlichen