PDA

View Full Version : سوال: Image Handler



fakhravari
چهارشنبه 08 شهریور 1391, 12:19 عصر
با سلام
من تولید کلمات امنیتی را با یک .ashx انجام می دهم. مشکلی نیست.
حالا میخواهم این قسمت ببرم در یک DLL
که
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Web.SessionState;

namespace Fakhravary
{
public class CaptchaHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
try
{
Random rand = new Random();
string mode = "1d5b3m8u9t6k4w7f6";
System.Text.StringBuilder str = new System.Text.StringBuilder();
for (int i = 0; i < 5; i++)
{
str.Append(mode.Substring(rand.Next(0, mode.Length), 1));
}

Font font = new Font("Algerian", 20, FontStyle.Italic);
Bitmap bitmap = new Bitmap(100, 35);
Graphics graphic = Graphics.FromImage(bitmap);
HatchBrush hatchBrush = new HatchBrush(HatchStyle.DottedGrid, Color.Black, Color.Blue);
graphic.Clear(Color.DarkGray);
graphic.DrawString(str.ToString(), font, hatchBrush, new PointF(0, 0));
hatchBrush.Dispose();
graphic.Dispose();
context.Response.ContentType = "image/jpeg";
bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
bitmap.Dispose();

context.Session["RandSecurity"] = str.ToString();
}
catch { context.Session["RandSecurity"] = "Not Img"; }
}
}
}
خب الان چطوری باید فراخونی کنم.:متفکر:

dorparasti
چهارشنبه 08 شهریور 1391, 13:05 عصر
نیاز به 2 تا کلاس دارید .
یک کلاس که عملیات ساخت کپچا رو انجام میده مثلاً MyCaptcha و
یکی هم که فقط برای انتقال کپچا از dll به کد فراخواننده استفاده میشه مثلاً CaptchaInfo . این کلاس دومی 2 تا Property نیاز داره یکی از نوع string یکی از نوع image .