MVC Postsharp ReturnValue Üzerine Birtakım Çalışmalar

 

MVC üzerinde postsharp kullanırken jsonresult tipinde standart bir mesaj döndürmek , ayrıca Exceptipn degerlerini yakalayıp, yakalanan hatayıda ajaxresponse seklinde sonuc dondurmek için birkaç satır calısma  :)

using PostSharp.Aspects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace TmTKingStar.WebUI.Aspects
{
    public class AjaxResult
    {
        public bool Sonuc { get; set; } = true;
        public string Mesaj { get; set; }
        public object Data { set; get; }
    }


    [Serializable]
    public class AspectJsonFormCevap : OnMethodBoundaryAspect
    {
        private Exception _ex;
        private bool _hatafirladiMi = false;
        public override void OnEntry(MethodExecutionArgs args)
        {
            base.OnEntry(args);
        }
        public override void OnExit(MethodExecutionArgs args)
        {
            JsonResult r = new JsonResult();
            if (_hatafirladiMi)
            {
                r.Data = new AjaxResult() { Mesaj = _ex.Message, Sonuc = false };
            }
            else
            {
                r = (JsonResult)args.ReturnValue;
                r.Data = new AjaxResult() { Mesaj = r.Data == null ? "İşlem Başarılı" : r.Data.ToString() };

            }
            r.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            args.ReturnValue = r;
            base.OnExit(args);
        }

        public override void OnException(MethodExecutionArgs args)
        {
            _hatafirladiMi = true;
            _ex = args.Exception;
            args.FlowBehavior = FlowBehavior.Continue;
            base.OnException(args);
        }

    }



}

 

Editlenmiş versiyonu nu da ekleyelim ;)

namespace Deneme.Aspect.PostSharp
{
    [Serializable]
    public class FormCevapJson : OnMethodBoundaryAspect
    {


       

        public override void OnSuccess(MethodExecutionArgs args)
        {
            JsonResult result = new JsonResult();
            result = (JsonResult)args.ReturnValue;
            result.Data = new AjaxSonuc() { mesaj = result.Data == null ? "İşlem Başarılı" : result.Data.ToString() };
            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            args.ReturnValue = result;
        }


        public override void OnException(MethodExecutionArgs args)
        {
            //hataları loglama- mail atma gib işlemler
            if (true)
            {
                EmailSender emailsender = new EmailSender();
                emailsender.Send(args.Exception, "WARNING");
               
            }

            JsonResult result = new JsonResult();
            result.Data = new AjaxSonuc() {sonuc  = false, mesaj = args.Exception.Message };
            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            args.FlowBehavior = FlowBehavior.Return;
            args.ReturnValue = result;
            

        }
    }
}

Müellifi: Hüsrev YILDIZ
Yayın Tarihi : 10.11.2018

Hüsrev YILDIZ