ASP.Net Mvc HttpHandler Kullanımı

  1. Mustafa58
    12
    145
    4/4/2019 3:19:00 PM

    Asp.net de kendi image handler ımızı yazabiliyorduk HttpHandler sayesinde , Asp.Net Mvc de nasıl yazabiliriz ?

    Türkçe kaynaklarda MVC de nasıl yapıldığını bulamadım , bilenler çalışan örnek uygulama paylaşabilir mi , yabancı kaynaklardakini çalıştıramadım

    asp.net-mvc c# .net 2 ay önce 228 Görüntüleme

( 1 ) Cevap

  1. Snoopy
    11
    11116
    4/4/2019 4:31:00 PM

    Yine IHttpHandler interface ini kullanarak bir image handler yazabilirsin ,yanlız birde IRouteHandler arayüzünü kullanacağız ;

    IRouteHandler arayüzünden implement edilen kendi ReplyFeedImageRouteHandler sınıfımızı yazalım

    public class ReplyFeedImageRouteHandler : IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new ReplyFeedImageHttpHandler(requestContext);
        }
    }
    

    Daha sonra yine kendimize ait olacak, IHttpHandler arayüzünden implement olan , ReplyFeedImageHttpHandler sınıfımızı yazalım.

    Örnek olarak da , ProcessRequest() metodumuz içine gelen requestin yükseklik genişlik bilgisine göre bir resim oluşturalım.

    public class ReplyFeedImageHttpHandler : IHttpHandler
    {
        public bool IsReusable => false;
    
        public void ProcessRequest(HttpContext context)
        {
            int width = Int32.Parse(context.Request.QueryString["genislik"]);
            int height = Int32.Parse(context.Request.QueryString["yukseklik"]);
    
            Bitmap bitmap = new Bitmap(width, height);
            Graphics graphics = Graphics.FromImage((Image)bitmap);
            graphics.FillRectangle(Brushes.DarkOrange, 0f, 0f, bitmap.Width, bitmap.Height);
    
            MemoryStream memoryStream = new MemoryStream();
            bitmap.Save(memoryStream, ImageFormat.Png);
            byte[] imageBuffer = memoryStream.ToArray();
    
            context.Response.ContentType = "image/png";
            context.Response.BinaryWrite(imageBuffer);
            context.Response.Flush();
    
            memoryStream.Dispose();
        }
    }
    

    Son olarak mutlaka yapmamız gereken bir iş daha var , App_Start altındaki RouteConfig sınıfımızın RegisterRoutes metoduna

    routes.Add(new Route("resim", new ReplyFeedImageRouteHandler()));
    

    kodlarını ekliyoruz

    asp-net-mvc-image-httphandler

    Ve yazdığımız kodu çalıştırıp deniyoruz , genislik ve yukseklik bilgilerini QueryString ile gönderiyoruz , ReplyFeedImageHttpHandler gelen genişlik yükseklik bilgisine göre resim oluşturacaktır

    asp-net-mvc-resim-httphandler

Cevabınız