Solved

Microsoft Enterprise Library 6.0: ExceptionPolicyFactory does not create Exception Manager

Posted on 2013-12-17
3
2,271 Views
Last Modified: 2014-01-02
I started playing with Microsoft Enterprise Library 6.0 using .Net 4.5 and VS 2012.

I am trying to use the exception handling block and logging block to first log an exception and then replace the exception with another exception.

This is the configuration section:

<exceptionPolicies>
            <add name="ReplaceWithFriendlyMessage">
                <exceptionTypes>
                    <add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        postHandlingAction="ThrowNewException">
                        <exceptionHandlers>
                <add name="Logging Exception Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                              logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
                              formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"
                              priority="0" />
                            <add name="Wrap Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WrapHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                                exceptionMessage="Unexpected Error Occurred" wrapExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
                        </exceptionHandlers>
                    </add>
                </exceptionTypes>
            </add>
</exceptionPolicies>

 

This is how the exception handling factory is used at initialization:

Dim config As IConfigurationSource = ConfigurationSourceFactory.Create()
Dim factory As ExceptionPolicyFactory = New ExceptionPolicyFactory(config)
exManager = factory.CreateManager

exManager is of the type ExceptionManager and defined as an instance variable of the form.

I noticed that the factory.CreateManager code returns a null object with the configuration defined above. So my code throws a null reference exception later when I call exManager.Process or exManager.HandleException.

If I comment out the logging exception handler section, the exception manager gets loaded and handles the exception using the wrap exception handler. So if I comment out this text, the code works fine.

<!--<add name="Logging Exception Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                              logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
                              formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"
                              priority="0" />-->

I am inclined to say something is wrong in the configuration of Logging Exception Handler. The configuration section was added using the Enterprise Library 6.0 configuration tool. I am not sure why Exception Policy Factory does not throw an exception if the configuration is incorrect. Also, I compared my configuration with several working samples on the internet and they are identical to my settings with the exception of an older version of Enterprise Library reference.

I'll retry this in Ent Library 5 and see if I can find out something. In the meantime, I'll really appreciate any help with this issue. Thanks in advance.
0
Comment
Question by:shekhar_shashi
  • 3
3 Comments
 
LVL 3

Accepted Solution

by:
shekhar_shashi earned 0 total points
ID: 39725211
I tried the same solution in Enterprise Library 5 and it worked fine. I did not use the factory class, just used ExceptionPolicy.HandleException but I noticed how the original exception was logged and then wrapped with a custom exception. The configuration is provided below.

<exceptionPolicies>
            <add name="LogAndReplacePolicy">
                <exceptionTypes>
                    <add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        postHandlingAction="ThrowNewException">
                        <exceptionHandlers>
                            <add name="Logging Exception Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                                logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
                                formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"
                                priority="0" />
                            <add name="Wrap Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WrapHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                                exceptionMessage="Unexpected Error Occurred." wrapExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
                        </exceptionHandlers>
                    </add>
                </exceptionTypes>
            </add>
        </exceptionPolicies>
0
 
LVL 3

Author Comment

by:shekhar_shashi
ID: 39727384
0
 
LVL 3

Author Closing Comment

by:shekhar_shashi
ID: 39751529
The solution provided on MSDN worked for me.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…

896 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now