SeeAlso: EDRAWiki Summary: Debugging the EDRA
We were a little surprised recently when a consultant from a leading boutique consultancy evaluated the EDRA - without reading any of our documentation first. Before you start off on such an endeavor there are a couple of tips we might suggest that would make this approach a little more productive:
Hints:1. Make sure the Execution_Timeout handler is removed from relevant pipelines, as otherwise your debugging experience is likely to be interupted after 30 seconds.
2. If you are using web services interface you might want to consider setting the proxy Timeout propery = -1, for similar reasons to above
Starting Points:1. Use the quickstarts - they have simplified pipelines which will make initial code walkthroughs a little simpler
2. Global Bank - if you are interested in seeing the EDRA applied in a real life scenario consider following Appendix B of the Global Bank Reference Implementation documentation. We have several collaboration diagrams that walk you through the full bill payment use case.
Known issues:1. Several people have noticed that they are not able to step into some code (eg - the business action), as the PDB's are not copied to the actual host directory. We are trying to repro at the moment - but please let us know (on
GotDotNet workspace or shadowfx@microsoft.com if you observice this problem as well. Solution is to copy the PDB's into the host directory...
Key breakpoints These are useful breakpoints if you want to debug/learn/follow EDRA 1.0 flow
Inspecting the content of the raw message arriving to EDRA. A breakpoint at the doors of EDRA is needed.
File:
Transports\Interface\WebServiceInterfaceAdapter.cs Line #: 309
Line: Request request = new Request();
Method:
ExecuteRequest When extending some EDRA core component (like targets, transports, handlers, etc) you may want to peek if the config was succesfuly loaded
File:
Tools\Support\Configuration\ConfigurationSectionHandler.cs Line #: 67
Line:
XmlValidatingReader vreader = new
XmlValidatingReader( new
XmlTextReader( new
StringReader( section.OuterXml ) ) );
Method: Create
- Business Action Debugging
Step before the business action is invoked. EDRA goes through this point each time a business action is about to be called
File:
Pipeline\Targets\BusinessActionTarget.cs Line #: 101
Line: invocator.Execute( context, settings );
Method: Submit
Step before the handler chain is being executed
File:
\Pipeline\Pipeline\PipelineController. Line: 131
Line #: firstHandler.Execute( context );
Method: Execute