Automated Error Reporting for Outlook Add-ins?

hdphdp Posts: 7
edited February 4, 2011 5:51AM in SmartAssembly 5
Hi,

I am testing SA for reporting exceptions within an Outlook plugin. It doesn't seem to work because it's a DLL and there is a warning saying to call ExceptionReporting.Report(Exception) manually.

Could you give me any directions about it? I think there are plenty of add-ons working with SA, so I assume it's easy but I am not finding any documentation on Internet.

Thanks,
HDP

Comments

  • There's an article about error reporting with dlls here: http://www.red-gate.com/supportcenter/C ... 210439.htm

    If you're still having trouble after reading it, I'd suggest you get in touch with support@red-gate.com
  • Hi,

    I followed the instructions. But after processing the assembly (and copying it to the original name) I receive the error pointed in the subject.


    Thanks,
    HDP
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    Hello,

    If you just use ReportException.Report, this will do nothing on its' own. You must also process the assembly using SmartAssembly and enable error reporting, otherwise SA would not know which project to file the report under or who to send notification emails to, etc.
  • Hi Brian,

    I also processed the DLL. What's strange is that I make it work in a simple project throwing the exception but not in a bigger project. I am doing the same in both projects: throwing a division by zero exception.

    What can break smartassembly working? the other project has many references. If you can give me some direction it will be useful.

    Thanks,
    HDP
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    The message is shown whenever ReportException throws an exception. Maybe a div/0 exception is a bad example. Some exception types will actually stop the framework -- can you try just throwing a new Exception()?
  • I tried with that with the same effect. There is anything that can interfere with the SA build process?


    Thanks,
    HDP
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    Only explanation I have is an exception is being thrown whilst trying to report the exception.

    Or the new build of the dll is not being loaded and you're still loading the old one. If you do versioning, you can update the version number of the dll and attach a debugger to your office app and look to see the version of the dll being loaded.
  • Brian, it seems that I discovered the source of the errors. And it has a high probability of being a SA bug:

    i) Using IL DASM when it works with a simple add-in, SA adds a try/catch over our try/catch, and it catches System.Exception.

    ii) Using IL DASM when it doesn't work with the real add-in, SA adds a try/catch over our try/catch, and it catches System.Web.HttpUtility (??? and this is not an exception).

    Below is the code. Do you think a workaround for this exists?

    Thanks,
    HDP

    i)

    .try {
    .try {
    ...
    ...
    ...
    }catch [mscorlib]System.Excepton {
    ...
    ...
    IL_003a: call void SmartAssembly.ReportException.ExceptionReporting::Report(class [mscorlib]System.Exception)
    ...
    ...
    }
    } catch [mscorlib]System.Exception
    {
    IL_0079: ldloc.0
    IL_007a: ldloc.1
    IL_007b: ldarg.0
    IL_007c: call void SmartAssembly.SmartExceptionsCore.StackFrameHelper::CreateException3(class [mscorlib]System.Exception,
    object,
    object,
    object)

    }


    ii)
    .try {
    .try {
    ...
    ...
    ...
    }catch [mscorlib]System.Excepton {
    ...
    ...
    IL_003a: call void SmartAssembly.ReportException.ExceptionReporting::Report(class [mscorlib]System.Exception)
    ...
    ...
    }
    } catch [System.Web]System.Web.HttpUtility
    {
    IL_004e: ldloc.0
    IL_004f: ldarg.0
    IL_0050: call void SmartAssembly.SmartExceptionsCore.StackFrameHelper::CreateException2(class [mscorlib]System.Exception,
    object,
    object)

    }
  • More information:

    If I remove references to System.Web.HttpUtility, now it points to

    [System.Web.Services]System.Web.Services.WebServiceBindingAttribute

    But I don't have a WebServiceBindingAttribute in my code. May be is used under a web reference (SOAP) that I am using.

    Hope it helps in your way to find a solution.

    Thanks,
    HDP
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    I don't think this IL is accurate. SmartAssembly obfuscates the exception reporting. If you disassemble in Reflector, you get:
    public static void CreateException2(Exception exception1, object obj1, object obj2)
    {
        // This item is obfuscated and can not be translated.
    }
    
Sign In or Register to comment.