网上找了一个aop,准备改下自己用                //执行方法前
                if (this._interceptorObject.MethodExecuting(this._interceptorObject, call.MethodBase.Name, call.Args))
                {
                    try
                    {
                        //执行方法
                        retMsg = _nextSink.SyncProcessMessage(msg);
                    }
                    catch(Exception ex)
                    {
                    调试测试,方法报错没有进入到这里
                    }
                    //接受返回结果
                    var returnValue = ((IMethodReturnMessage)retMsg).ReturnValue;
                    //执行方法后
                    this._interceptorObject.MethodExecuted(this._interceptorObject, call.MethodBase.Name, call.Args, returnValue);
                }

解决方案 »

  1.   

    nuget上AOP框架太多了
    发现有bug就换一个啊
    如果想简单就用那些流行的重量级AOP框架
    要轻量的就可以慢慢试
      

  2.   

    ‘网上的代码’有一些问题。_nextSink调用如果抛出异常,异常信息将反应在那个retMsg中。
    retMsg = _nextSink.SyncProcessMessage(msg);方法栈异常仅限于SecurityException,可能是CLR在执行方法调用前,权限检查不符条件而抛出,而不会是方法本身抛出的。
      

  3.   

    类似:
    IMessage retMsg = new ReturnMessage(new Exception("Hey!"), call);
      

  4.   

    AOP 不论 asp.net mvc  还是 core mvc 都自带的有啊
    你还需要自己下载吗?
    蛋疼
      

  5.   

    core我不清楚,但是asp.net mvc有ExceptionFilterAttribute可以拦截啊。
    如果不是要用到第三方的扩展方法,
    那我觉得就够用了。
    https://blog.csdn.net/hanjun0612/article/details/50913485
      

  6.   

    我job用,没有ExceptionFilterAttribute这个特性
      

  7.   

    mvc的错误已经有了
    services.AddMvc(option =>
                {
                    option.Filters.Add(new GlobalExceptionFilter()); //錯誤捕捉
                });
      

  8.   

    嘿嘿,我用了好几篇帖子说了“AOP注入“不好调试的,无论是静态织入,还是动态代理的,他都不好调试所以正常玩法是你先别注入,先单独把”待注入的代码“使用DDD单元测试,全通过了,再改成注入的。不然有得搞,毕竟是注入的,是代理的 。代码本不是你的”代码“
      

  9.   


    不是网上有问题,你让我代理了,那么你觉着出错了,是你知道,还是我知道。当然是我知道,我是代理人,是我办的事情ps:别惊讶,但凡这类都这样,比如微软自己的路由,有多少在联调的时候说,“这不是我的问题,你都没进我的方法”,why?路由,参数检查是微软代理的,他说错了,直接就扔500或者404了,哪还轮到你的代码